我想浏览当前文件夹及其所有子文件夹,并获取所有带有.htm | .html扩展名的文件。我发现有可能找出一个对象是dir还是这样的文件:
import os
dirList = os.listdir("./") # current directory
for dir in dirList:
if os.path.isdir(dir) == True:
# I don't know how to get into this dir and do the same thing here
else:
# I got file and i can regexp if it is .htm|html
最后,我希望将所有文件及其路径放在一个数组中。有可能吗?
答案 0 :(得分:102)
您可以使用os.walk()
递归遍历目录及其所有子目录:
for root, dirs, files in os.walk(path):
for name in files:
if name.endswith((".html", ".htm")):
# whatever
要构建这些名称的列表,您可以使用列表解析:
htmlfiles = [os.path.join(root, name)
for root, dirs, files in os.walk(path)
for name in files
if name.endswith((".html", ".htm"))]
答案 1 :(得分:5)
我有类似的事情要做,这就是我的工作方式。
def start_suitesetup(self, name, attributes):
....
....
test = TestCase(name=name,
description=description,
start=now(),
attachments=[],
labels=[],
parameters=[],
steps=[],
severity='')
希望这会有所帮助。
答案 2 :(得分:3)
使用newDirName = os.path.abspath(dir)
为子目录创建完整的目录路径名,然后像完成父项一样列出其内容(即newDirList = os.listDir(newDirName)
)
您可以创建代码段的单独方法,并通过子目录结构递归调用它。第一个参数是目录路径名。这将针对每个子目录进行更改。
这个答案基于Python库的3.1.1版本文档。在Python 3.1.1库参考(第10章 - 文件和目录访问)的第228页上有一个很好的模型示例。 祝你好运!
答案 3 :(得分:0)
Sven Marnach的解决方案略有改动......
import os
folder_location = 'C:\SomeFolderName'
file_list = create_file_list(folder_location)
def create_file_list(path):
return_list = []
for filenames in os.walk(path):
for file_list in filenames:
for file_name in file_list:
if file_name.endswith((".txt")):
return_list.append(file_name)
return return_list
答案 4 :(得分:0)
在python 3中,您可以使用os.scandir():
for i in os.scandir(path):
if i.is_file():
print('File: ' + i.path)
elif i.is_dir():
print('Folder: ' + i.path)
答案 5 :(得分:0)
from tkinter import *
import os
root = Tk()
file = filedialog.askdirectory()
changed_dir = os.listdir(file)
print(changed_dir)
root.mainloop()