以下程序是否访问文件夹子文件夹中的文件?

Does the following program access a file in a subfolder of a folder?

使用

import sys

folder = sys.argv[1]
for i in folder:
    for file in i:
        if file == "test.txt":
            print (file)

这会访问子文件夹的文件夹中的文件吗?例如1主文件夹,有20个子文件夹,每个子文件夹有35个文件。我想在命令行中传递文件夹并访问其中的第一个子文件夹和第二个文件

都没有。这不会查看文件或文件夹。

sys.argv[1] 只是一个字符串。 i 是该字符串的字符。 for file in i 不应该工作,因为你不能迭代一个字符。

也许您想 glob or walk a directory

不,这行不通,因为 folder 将是一个字符串,因此您将遍历该字符串的字符。您可以使用 os module 例如 os.listdir() 方法)。我不知道你传递给脚本的到底是什么,但传递绝对路径可能是最简单的。查看用于路径操作的 some other methods in the module

这是一个使用 os.walk 方法的简短示例。

import os
import sys


input_path = sys.argv[1]
filters = ["test.txt"]
print(f"Searching input path '{input_path}' for matches in {filters}...")


for root, dirs, files in os.walk(input_path):
    for file in files:
        if file in filters:
            print("Found a match!")
            match_path = os.path.join(root, file)
            print(f"The path is: {match_path}") 

如果上述文件名为 file_finder.py,而您想搜索目录 my_folder,您可以从命令行调用 python file_finder.py my_folder。请注意,如果 my_folderfile_finder.py 不在同一目录中,则您必须提供 完整 路径。