加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python – 有没有办法绕过’os.listdir()’为坏文件夹名称返回乱

发布时间:2020-12-20 11:11:50 所属栏目:Python 来源:网络整理
导读:我有一个用 Python编写的简单脚本: import osdef Path(SourcePath): for Folder in os.listdir(SourcePath): print "TESTING: %s" % FolderPath("\192.168.0.36PDFs") 当我运行它时,它通过局域网上的远程共享进行递归,只是显示找到的文件夹的名称.此共
我有一个用 Python编写的简单脚本:

import os

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

Path("\192.168.0.36PDFs")

当我运行它时,它通过局域网上的远程共享进行递归,只是显示找到的文件夹的名称.此共享主要包含文件夹.

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

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

>“6008386 HH – Walkers Crisps”
>“6008157 CPP – 圣诞老人巧克力”
>“6007458 SCA – Morrisons香蕉”

请注意,“6008157 CPP – 圣诞老人巧克力”最后有一个空格.这是上面脚本的列表:

>“测试:6008386 HH – Walkers Crisps”
>“测试:6EB??A72~1”
>“测试:6007458 SCA – Morrisons香蕉”

如何在递归远程目录时避免这种情况?如果仅由’os.listdir()’正确返回,我可以修复文件夹名称.

关于如何解决这个问题的任何想法?

解决方法

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

在这种情况下,它正在发生,因为你的“圣诞老人巧克力”文件名以空格结束. Windows文件名不能以空格结尾,因此它使用占位符来使文件可访问.

我不认为你可以使用GetLongPathName – 没有长的文件名要映射到,因为根据定义,这将是一个非法的文件名.如果你有这样的文件名,我认为没有办法找出它在服务器上的实际内容,并且它会对你有用,因为你不能通过那个文件名来引用它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读