检查目录在 Python 中是否有效

Kei*_*ase 3 python linux windows directory

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

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

有简单的解决方案吗?

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

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

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

Mar*_*eth 5

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

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

请记住,除了无效字符之外,可能还有一些问题。在编写此类函数时,请参阅此问题以了解各种注意事项。

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