我有一个用
Python编写的简单脚本:
import os
def Path(SourcePath):
for Folder in os.listdir(SourcePath):
print "TESTING: %s" % Folder
Path("\\\\192.168.0.36\\PDFs")
当我运行它时,它通过局域网上的远程共享进行递归,只是显示找到的文件夹的名称.此共享主要包含文件夹.
问题是,如果文件夹名称的名称末尾有空格,则上面的脚本会列出乱码.
例如,如果我在上面的共享中有以下文件夹:
>“6008386 HH – Walkers Crisps”
>“6008157 CPP – 圣诞老人巧克力”
>“6007458 SCA – Morrisons香蕉”
请注意,“6008157 CPP – 圣诞老人巧克力”最后有一个空格.这是上面脚本的列表:
>“测试:6008386 HH – Walkers Crisps”
>“测试:6EBA72~1”
>“测试:6007458 SCA – Morrisons香蕉”
如何在递归远程目录时避免这种情况?如果仅由’os.listdir()’正确返回,我可以修复文件夹名称.
关于如何解决这个问题的任何想法?
最佳答案 当CIFS上的文件名包含在Windows文件名中非法的字符时,Windows使用生成的8.3“占位符”.
在这种情况下,它正在发生,因为你的“圣诞老人巧克力”文件名以空格结束. Windows文件名不能以空格结尾,因此它使用占位符来使文件可访问.
我不认为你可以使用GetLongPathName – 没有长的文件名要映射到,因为根据定义,这将是一个非法的文件名.如果你有这样的文件名,我认为没有办法找出它在服务器上的实际内容,并且它会对你有用,因为你不能通过那个文件名来引用它.