Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在操作系统模块中提供字符串时出现问题_Python 3.x_Linux_Ubuntu - Fatal编程技术网

Python 3.x 在操作系统模块中提供字符串时出现问题

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()返回三个内容:当前目录文件名、当前目录所有子目

这个程序是关于打印用户提到的文件夹中所有文件的完整路径,以用户提到的扩展名结尾。 当我运行程序时,第10行出现一个错误,指出:TypeError:join()参数必须是str或bytes,而不是“list”。我使用type(file)检查了file的变量类型,它返回str。
哪里出错了???

您应该仔细检查文档并仔细查看收到的错误消息。您的错误消息表示您正在尝试组合列表和字符串。您已经验证了
文件
是一个字符串,但是
文件夹名
子文件夹

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))