Python 3.x 在操作系统模块中提供字符串时出现问题
这个程序是关于打印用户提到的文件夹中所有文件的完整路径,以用户提到的扩展名结尾。 当我运行程序时,第10行出现一个错误,指出:TypeError:join()参数必须是str或bytes,而不是“list”。我使用type(file)检查了file的变量类型,它返回str。Python 3.x 在操作系统模块中提供字符串时出现问题,python-3.x,linux,ubuntu,Python 3.x,Linux,Ubuntu,这个程序是关于打印用户提到的文件夹中所有文件的完整路径,以用户提到的扩展名结尾。 当我运行程序时,第10行出现一个错误,指出:TypeError:join()参数必须是str或bytes,而不是“list”。我使用type(file)检查了file的变量类型,它返回str。 哪里出错了???您应该仔细检查文档并仔细查看收到的错误消息。您的错误消息表示您正在尝试组合列表和字符串。您已经验证了文件是一个字符串,但是文件夹名和子文件夹呢 os.walk()返回三个内容:当前目录文件名、当前目录所有子目
哪里出错了???您应该仔细检查文档并仔细查看收到的错误消息。您的错误消息表示您正在尝试组合列表和字符串。您已经验证了
文件
是一个字符串,但是文件夹名
和子文件夹
呢
os.walk()
返回三个内容:当前目录文件名、当前目录所有子目录的列表以及当前目录中所有文件的列表。这告诉我们,foldername
也是一个字符串,但是子文件夹
实际上是一个字符串列表,它会导致您看到错误消息
此外,由os.walk()
返回的所有文件都包含在根目录中,而不是子目录中。因此,要打印文件的路径,您需要将文件名连接到根目录
文件路径
只需关注问题的os.walk()
部分,以下内容将打印具有给定文件扩展名的所有文件的完整路径:
import os
def compute(path, fileExt):
if os.path.exists(path): # checks if the path entered by the user exists
print("The path exists")
for foldername, subfolder, filename in os.walk(path):
for file in filename:
if file.endswith(fileExt):
print(os.path.join(foldername, subfolder, *file))
else:
print("The path does not exist !")
子文件夹
是此处的列表,而不是文件。您可能需要在此处检查您的逻辑。尝试在if
循环中仅打印子文件夹,然后根据您希望的输出修改代码。
import os
for foldername, subfolder, files in os.walk(top, topdown=False):
for file in files:
if file.endswith(fileExt):
print(os.path.join(foldername, file))