gpt4 book ai didi

Python os.walk 始终附加根

转载 作者:行者123 更新时间:2023-11-28 22:39:45 25 4
gpt4 key购买 nike

为了学习,我正忙于一个 Python 项目。

我在 atm 上遇到了一些非常奇怪的事情......

这是我正在运行的代码(代码的一小部分,但它也会产生相同的错误):

import os

path_input = raw_input('Give path to check for documents(e.g. /Users/Frank/Desktop): ')
if os.path.isdir(path_input):
for root, dirs, files in os.walk(path_input):
for file in dirs:
if os.path.splitext(file)[1].lower() in ('.docx', '.pdf', '.doc', '.pptx', '.txt',
'.ppt', 'xls', 'xlsx'):
print(os.path.abspath(file))
else:
print("\nPlease enter a valid path, for example: '/Users/Frank/Documents.'")

它读取它遇到的任何文件,它在 os.walk 中找到,但是每当 print(os.path.abspath(file)) 部分出现时,它总是附加我的根文件夹脚本的存储位置。

我似乎无法找出我做错了什么。

更新(添加输出示例):

/Users/Username/Dropbox/Test/Python/version5.txt
/Users/Username/Dropbox/Test/Python/version6.txt
/Users/Username/Dropbox/Test/Python/version7.txt

如您所见,它总是显示“/Users/Username/Dropbox/Test/Python/”这与它存储的 python 脚本的位置相同,而 .txt 文件存储在另一个位置。

最佳答案

每当您调用 os.walk ,它返回 root目录 列表和文件 列表。尽管您的程序读起来像正确的英语,但它并没有按照您希望它在 Python 中执行的操作进行。线路for file in dirs 不是查看目录中的所有文件;它只是遍历 root 的所有子文件夹.我认为您真正想要的是遍历 files相反:

import os

path_input = raw_input('Give path to check for documents(e.g. /Users/Frank/Desktop): ')
if os.path.isdir(path_input):
for root, dirs, files in os.walk(path_input):
### iterate over files instead of dirs
for file in files:
# The full file path needs to be made by joining with root.
fullfile = os.path.join(root, file)
if os.path.splitext(fullfile)[1].lower() in ('.docx', '.pdf', '.doc', '.pptx', '.txt',
'.ppt', 'xls', 'xlsx'):
print(os.path.abspath(fullfile))
else:
print("\nPlease enter a valid path, for example: '/Users/Frank/Documents.'")

关于Python os.walk 始终附加根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34414655/

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