Python-有没有办法';os.listdir()';返回错误文件夹名称的胡言乱语?

Python-有没有办法';os.listdir()';返回错误文件夹名称的胡言乱语?,python,Python,我有一个用Python编写的简单脚本: import os def Path(SourcePath): for Folder in os.listdir(SourcePath): print "TESTING: %s" % Folder Path("\\\\192.168.0.36\\PDFs") 当我运行它时,它会通过局域网上的远程共享进行递归,并且只显示找到的文件夹的名称。此共享主要包含文件夹 问题是,如果文件夹名称的末尾有空格,上面的脚本会列出jibberis

我有一个用Python编写的简单脚本:

import os

def Path(SourcePath):
    for Folder in os.listdir(SourcePath):
        print "TESTING: %s" % Folder

Path("\\\\192.168.0.36\\PDFs")
当我运行它时,它会通过局域网上的远程共享进行递归,并且只显示找到的文件夹的名称。此共享主要包含文件夹

问题是,如果文件夹名称的末尾有空格,上面的脚本会列出jibberish

例如,如果我在上述共享中有以下文件夹:

  • “6008386 HH-Walkers薯片”
  • “6008157 CPP-圣诞老人巧克力”
  • “6007458 SCA-莫里森香蕉”
  • 请注意,“6008157 CPP-圣诞老人巧克力”的末尾有一个空格。这是上述脚本中的列表:

  • “测试:6008386 HH-Walkers薯片”
  • “测试:6EBA72~1”
  • “测试:6007458 SCA-莫里森香蕉”
  • 在递归远程目录时如何避免这种情况?只要“os.listdir()”正确返回文件夹名,我就可以修复该文件夹名


    关于如何解决这个问题有什么想法吗?

    这不是(|)易卜里什语,而是一种语言。它是特定于Windows的,但您可以使用
    将其映射回长名称。

    当CIFS上的文件名包含Windows文件名中非法的字符时,Windows将使用生成的8.3“占位符”

    在本例中,之所以发生这种情况,是因为您的“圣诞老人巧克力”文件名以空格结尾。Windows文件名不能以空格结尾,因此它使用占位符使文件可访问


    我不认为可以使用GetLongPathName来实现这一点——没有长文件名可以映射到,因为根据定义,这将是一个非法的文件名。如果您有这样的文件名,我不认为有任何方法可以找到它在服务器上的实际位置,而且它对您的好处有限,因为您不能通过该文件名引用它。

    作为额外的数据点,您的脚本在Linux中使用这些名称的本地文件目录上按预期工作。听起来这是Windows特有的行为。+1。这是Windows文件名限制的问题,与Python无关。