缺少带有 os.walk() 的文件
Missing a file with os.walk()
我正在尝试为同事制作一个文件列表工具。代码很简单:
source = C:\Users\Documents\test
extension = '.txt'
file_list = []
lower_levels = False
for root, dirs, files in os.walk(source):
for n in files:
if n.endswith(extension):
file_list.append(n)
if (not lower_levels): #does not check lower levels
break
writing_in_excel(source, file_list) #output is an excel file
在我的测试文件夹中测试它时,它工作得很好,我在输出中列出了我所有的 121 个文件。
然而,当我的同事尝试时,与 Windows 给出的文件数相比,缺少一个文件(我验证了, windows 表示 39735 个扩展名正确的文件,对于 39734 in excel 文件)并且鉴于文件的数量,很难找出丢失的文件。
问题好像不是写在excel,因为我写的文件总数是len(file_list) , 并且已经可以看到列表中缺少该文件。我猜它来自目录中的行走??
有人知道问题出在哪里吗?
谢谢
可能存在 os.walk
默认不显示的错误。可以通过设置 onerror
参数来处理。编写错误处理程序:
def walk_error(error):
print(error.filename)
然后将您的呼叫更改为:
for root, dirs, files in os.walk(source, onerror=walk_error):
看起来问题出在扩展条件上,其中一个文件的扩展名是大写的。
所以我只是替换了
if n.endswith(extension):
由
ext = os.path.splitext(n)[-1].lower() #get the current file extension in lower case
if ext== extension:
而且有效!
感谢您的帮助。
我正在尝试为同事制作一个文件列表工具。代码很简单:
source = C:\Users\Documents\test
extension = '.txt'
file_list = []
lower_levels = False
for root, dirs, files in os.walk(source):
for n in files:
if n.endswith(extension):
file_list.append(n)
if (not lower_levels): #does not check lower levels
break
writing_in_excel(source, file_list) #output is an excel file
在我的测试文件夹中测试它时,它工作得很好,我在输出中列出了我所有的 121 个文件。
然而,当我的同事尝试时,与 Windows 给出的文件数相比,缺少一个文件(我验证了, windows 表示 39735 个扩展名正确的文件,对于 39734 in excel 文件)并且鉴于文件的数量,很难找出丢失的文件。
问题好像不是写在excel,因为我写的文件总数是len(file_list) , 并且已经可以看到列表中缺少该文件。我猜它来自目录中的行走??
有人知道问题出在哪里吗?
谢谢
可能存在 os.walk
默认不显示的错误。可以通过设置 onerror
参数来处理。编写错误处理程序:
def walk_error(error):
print(error.filename)
然后将您的呼叫更改为:
for root, dirs, files in os.walk(source, onerror=walk_error):
看起来问题出在扩展条件上,其中一个文件的扩展名是大写的。 所以我只是替换了
if n.endswith(extension):
由
ext = os.path.splitext(n)[-1].lower() #get the current file extension in lower case
if ext== extension:
而且有效!
感谢您的帮助。