为什么python没有按照我的打印语句调用序列
我正在学习python,并试用了os.walk()函数。我在Windows平台上使用python 3.4.4(64位)。根据我的理解python应该逐行执行我的语句。为什么python没有按照我的打印语句调用序列
在这段代码中我已经重复过directory.The目录结构
我需要打印第一,然后写的目录names.The代码中的所有文件是:
import os
dir_path = r"D:\\python_os_walk_check"
for root,dirs,files in os.walk(dir_path):
for file_name in files:
print(file_name)
for dir_name in dirs:
print(dir_name)
打印的输出中是:
first_folder
second_folder
test1.txt
test2.txt
根据我输出应该是:
test1.txt
test2.txt
first_folder
second_folder
我在哪里出错了?
您首先得到dir_path
的内容,它只是两个目录。这些文件位于目录中,因此稍后您可以在循环的第二和第三次迭代中找到它们。添加一个print(root)
作为循环内的第一件事,你会更清楚地看到发生了什么。
您可以存储文件/目录的名称,并在for循环完成后将其打印出来。
import os
dir_path = "D:\\python_os_walk_check"
file_list = []
dir_list = []
for root,dirs,files in os.walk(dir_path):
for file_name in files:
file_list.append(file_name)
for dir_name in dirs:
dir_list.append(dir_name)
for x in file_list:
print(x)
for i in dir_list:
print(i)
其实打印不是我的最终目的,我想了解我的理解 – Omkar
你可能会有点更像你似乎什么,如果你使用自上而下的参数os.walk
像这样想:
import os
dir_path = r"C:\Python34\Tools\pynche"
for root,dirs,files in os.walk(dir_path, topdown=False):
for file_name in files:
print(file_name)
for dir_name in dirs:
print(dir_name)
不幸的是,我认为这仅仅是两个级别的文件夹好。
作为一个更新的解决方案,您可以考虑在pathlib
模块Python 3 doc 11.1中提供的功能。
以上的代码有什么问题哦,是的,这可能是另一种方式获得相同的输出为2级文件夹所述。 – Omkar
而且,我知道。 –
好吧,我得到了它。我假设一个总迭代文件的列表将被返回文件变量。感谢您的答案。 – Omkar