python - 检查目录在 Python 中是否有效

标签 python windows linux directory

我有一个 python 2.7 程序,它根据用户输入编写某些文件和目录。我需要确保文件和目录对 linux 和 windows 都有效,因为文件将通过两个操作系统进行交换。这些文件最初将在 linux 中创建并手动移动到 windows。

我已经检查了 Python 文档、堆栈交换和几页谷歌,但没有找到任何有用的信息,这很奇怪,因为我认为这将是一个相当普遍的问题。

有没有简单的解决方案?

编辑: 我想验证目录文件名,以防用户输入不适用于 linux 或 windows 的路径。例如,如果用户输入“Folder1/This:Error/File.txt”,程序会将其视为错误。

该程序将在Linux 中运行并在linux 中写入文件,但稍后会将文件移动到windows。正斜杠/反斜杠的差异不是问题,但其他可能适用于 linux 但不适用于 windows 的字符会出现问题。

此外,文件或目录通常不存在(因为它们即将被创建)所以我需要检查保存在字符串中的路径是否是有效路径。

最佳答案

我不确定是否有内置函数可以满足您的需求,因此您可能需要自己完成。

最好的办法是创建一个您知道有效的字符的“白名单”。例如:字母数字、下划线等。然后,如果用户给出的文件名中有任何字符不在此列表中,则抛出错误。这个白名单是否遗漏了一些应该起作用的字符并不重要;做到 95% 正确(只要 5% 是假阴性)应该没问题。

请记住,除了无效字符之外,还可能存在一些问题。参见 this question编写此类函数时的各种注意事项。

最后,一种解决方案是自己命名文件,而不是让用户自己命名。根据您的情况,您可能能够使用一个文件名存储文件,但在应用程序中,您会看到它以不同的名称引用。当然,如果用户将直接在您的程序之外访问这些文件,这可能会造成混淆。

关于python - 检查目录在 Python 中是否有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11604256/

相关文章:

python - python中的递归图

python - 单击时禁用/启用 Tkinter 按钮

java - URL.getContent 编码错误

windows - 尝试在 Windows 上使用 Gulp 调整图像大小时出现 EOF 错误

c++ - WaitForSingleObject 在等待超时时间为零时会导致上下文切换吗?

r - linux redhat gsl R安装错误: cannot run C compiled programs.

c - Linux 中的奇怪开关

python - 编辑 csv 以按特定顺序显示 5 列,同时将格式应用于日期时间字段

python - 二维字典计数器

python - 捕获特定的 `Windows Error` 数字 - python