使用 python 读取目录及其子目录的内容
reading content of a directory and its subdirectories with python
我的目录 path/to/dir
包含 10 个子目录。所有子目录中都有文件。我想将每个子目录中的这些文件附加到一个唯一列表中。
我该怎么做?
import glob
path = '\path\to\dir\'
files = [f for f in glob.glob(path + "**/*", recursive=True)]
我的理解是您只想列出特定目录及其子目录中的所有文件名。
list1=[] #Empty list
for root, dirs, files in os.walk(fr"path\to\directory", topdown=False):
#Listing Directory
for name in files:
a=os.path.join(root, name)
print(a)
list1.append(a)
import os
path="C://Users//<user_name>//Desktop"
obj = os.scandir()
print("Files and Directories in '% s':" % path)
for entry in obj:
if entry.is_dir() or entry.is_file():
print(entry.name)
列出整个目录:
import os
def list_dirs(path):
obj = os.scandir(path)
for entry in obj:
if entry.is_dir():
print(1,entry.path)
list_dirs(entry)
elif entry.is_file():
print(2,entry.name)
else:
break
list_dirs(path)
它基本上使用了 os.scandir
方法,它提供了速度和更多好处,如文件元数据等,递归获取整个目录的列表。
也是@FaraazKurawle 的回答的列表理解方法:
def list_dir(path):
path=fr"{path}"
list_1=[os.path.join(root, name) for root, dirs, files in os.walk(path, topdown=False) for name in files]
return list_1
一些有用的链接:
- List all directory
- Os.scandir
- os.scandir vs os.listdir vs os.walk
我的目录 path/to/dir
包含 10 个子目录。所有子目录中都有文件。我想将每个子目录中的这些文件附加到一个唯一列表中。
我该怎么做?
import glob
path = '\path\to\dir\'
files = [f for f in glob.glob(path + "**/*", recursive=True)]
我的理解是您只想列出特定目录及其子目录中的所有文件名。
list1=[] #Empty list
for root, dirs, files in os.walk(fr"path\to\directory", topdown=False):
#Listing Directory
for name in files:
a=os.path.join(root, name)
print(a)
list1.append(a)
import os
path="C://Users//<user_name>//Desktop"
obj = os.scandir()
print("Files and Directories in '% s':" % path)
for entry in obj:
if entry.is_dir() or entry.is_file():
print(entry.name)
列出整个目录:
import os
def list_dirs(path):
obj = os.scandir(path)
for entry in obj:
if entry.is_dir():
print(1,entry.path)
list_dirs(entry)
elif entry.is_file():
print(2,entry.name)
else:
break
list_dirs(path)
它基本上使用了 os.scandir
方法,它提供了速度和更多好处,如文件元数据等,递归获取整个目录的列表。
也是@FaraazKurawle 的回答的列表理解方法:
def list_dir(path):
path=fr"{path}"
list_1=[os.path.join(root, name) for root, dirs, files in os.walk(path, topdown=False) for name in files]
return list_1
一些有用的链接:
- List all directory
- Os.scandir
- os.scandir vs os.listdir vs os.walk