gpt4 book ai didi

python - 使用结果的 os.listdir 和 os.stat 时出现 WindowsError

转载 作者:太空宇宙 更新时间:2023-11-03 17:45:08 24 4
gpt4 key购买 nike

我有以下代码片段,仅获取文件的时间戳。

files_list = os.listdir(os.path.join(path, folder))
for files in files_list:
stats = os.stat(os.path.join(path, folder, files))

我是否有可能遇到以下错误,因为它似乎违反直觉,它无法找到刚刚在 listdir 中获得的文件,当然除了竞争条件,这不是我在此怀疑的案例。

WindowsError: [Error 2] The system cannot find the file specified:
'\\\\sftp-server.domain.com\\homes\\server\\location\\FOLDER\\FILE.PDF'

我还想知道域查找/临时网络问题之类的问题是否会导致此错误?例如

\\sftp-server.domain\\homes\\server\\location\\FOLDER

\\sftp-server.domain\\homes\\server\\location\\FOLDER\FILE

只是 URL 字符串,与真正的文件系统遍历无关。

最佳答案

大概FOLDERFILE不是实际名称?仔细查看 WindowsError 报告的文件名。如果它们的最后一个部分包含问号,则说明 Unicode 文件名存在问题。具体来说,当目录包含无法在当前代码页中表示的 Unicode 字符的文件名(例如西欧或东欧语言环境中的日语字符)时,os.listdir 将返回具有无法表示的 Unicode 的文件名字符转换为 ?。显然,这种本质上损坏的名称无法传递给 IO 函数,例如 openos.stat

要解决此问题,请通过将目录作为 Unicode 字符串传递给 os.listdir 来请求 Unicode 文件名。这些将包含正确的字符,并且可以传递给 os.stat,后者将在内部调用宽 API:

dirname = unicode(os.path.join(path, folder), 'mbcs')
file_list = os.listdir(dirname)
for filename in file_list:
stats = os.stat(os.path.join(dirname, filename))
# ...

关于python - 使用结果的 os.listdir 和 os.stat 时出现 WindowsError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29923513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com