当前位置: 首页 > 面试题库 >

如何在Python中删除错误的路径字符?

慕嘉运
2023-03-14
问题内容

在Python中删除错误路径字符(例如Windows上的“ \”或“:”)的最跨平台方法是什么?

因为似乎没有理想的解决方案,所以我决定采用相对严格的限制,并使用了以下代码:

def remove(value, deletechars):
    for c in deletechars:
        value = value.replace(c,'')
    return value;

print remove(filename, '\/:*?"<>|')

问题答案:

不幸的是,可接受的字符集因操作系统 文件系统而异。

  • Windows:
* 当前代码页中的几乎所有字符都用作名称,包括Unicode字符和扩展字符集(128–255)中的字符,但以下各项除外:
  * 不允许使用以下保留字符:

<>:“ / / |?*
* 不允许使用整数表示形式(介于0到31之间)的字符。
* 目标文件系统不允许的任何其他字符。

接受的字符列表可能会有所不同,具体取决于首先格式化文件系统的计算机的操作系统和语言环境。

.NET具有GetInvalidFileNameChars和GetInvalidPathChars,但是我不知道如何从Python调用它们。

  • Mac OS:始终排除NUL,POSIX层排除“ /”,Apple API排除“:”
    • HFS +:Unicode 2.0规范中UTF-16可以表示的任何非排除字符序列
    • HFS:可以用MacRoman(默认)或其他编码表示的任何非排除字符序列,具体取决于创建文件系统的机器
    • UFS:与HFS +相同
  • Linux:
    • 本机(类似UNIX的)文件系统:任何字节序列(不包括NUL和“ /”)
    • FAT,NTFS,其他非本机文件系统:不同

最好的选择可能是在所有平台上都过于保守,或者只是尝试创建文件名并处理错误。



 类似资料:
  • 问题内容: 我如何消除在代码点火器中位于中心某处的每个路径中的突出?我要清洁非吗? 问题答案: 如果您使用的是Apache,请将.htaccess文件放在根Web目录中,其中包含以下内容:

  • 我在Win10中使用Windows子系统Linux(Ubuntu 18.04),并在其中安装了一个Maven。此外,我之前在Win10中安装了一个maven。现在,当我在WSL中使用时,它告诉我maven编译失败。我使用,发现它引用了Win10中安装的Maven。 此外,我运行并发现win10的路径被添加到wsl的路径中。我在使用WSL的时候不想使用Win10的路径中的任何东西,该怎么办呢?

  • 问题内容: 这是我的代码: 在搜寻这些网页时,我发现一些非AScii字符进入了从该脚本编写的html文件中,我需要删除这些字符或将其解析为可读字符。有什么建议吗?谢谢 问题答案: 字符为8字节(0-255),ascii字符为7字节(0-127),因此您只需删除ord值低于128的所有字符 chr将整数转换为字符,ord将字符转换为整数。 这应该是您的最终代码

  • 当我遇到与找不到文件相关的错误时,我正在执行此代码。文件存在于代码所在的同一文件夹中,但此错误不会继续。请帮忙! 代码: 以下是错误: Traceback(最近的调用最后): 文件“F:\Report on Artificial Intelligence\candlestick code\c5.py”,第13行,df=pd.read\u csv('nse2.csv',parse\u dates=T

  • 我有一个android应用程序,它在数组列表中绘制点的路径(名为“test”)。一种算法每次都会更新数组列表以使路径更短(它使用旅行推销员问题算法)。我目前面临的问题是以前的路径不清除,而是新的路径会覆盖以前的路径。

  • 本文向大家介绍如何在Python中从字符串中删除辅音?,包括了如何在Python中从字符串中删除辅音?的使用技巧和注意事项,需要的朋友参考一下 对于此问题,使用正则表达式是最简单的。您可以使用“ |”分隔多个字符 并使用re.sub(chars_to_replace,string_to_replace_with,str)。例如: 注意:您也可以使用[]创建要在正则表达式中替换的字符组。 如果只想保