我要在其上运行脚本的词典中有许多文件。 通常,我会使用“ os.listdir()”列出当前工作目录中的文件,然后告诉我的脚本在这些文件上运行。
例如:
dir = os.listdir():
for i in dir:
do stuff
但是,当我不在当前工作目录中时,我想在这些文件上运行脚本。这样,以后我就可以遍历多个文件夹。 有什么建议吗?
答案 0 :(得分:1)
listdir()
使用一个path
参数。您可以使用以下内容:
filelist1 = os.listdir("/home/user/directory1")
filelist2 = os.listdir("/home/user/directory2")
答案 1 :(得分:0)
为了读取目录下可用的所有文件:
andmap
要列出目录中所有可用的子目录:
from os import listdir
from os.path import isfile, join
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]
现在,让我们结合这些难题,仅列出父目录的子目录中的文件:
from os import listdir
from os.path import isdir, join
subdirs = [name for name in listdir(parent_dir) if isdir(join(parent_dir, name))]
示例输出:
from os import listdir
from os.path import isfile, join, isdir
parent_dir = "/foo/bar"
dirs = [name for name in listdir(parent_dir) if isdir(join(parent_dir, name))]
onlyfiles = []
for dir in dirs:
f = [f for f in listdir(dir) if isfile(join(dir, f))]
onlyfiles += f
print(onlyfiles)
您也可以尝试使用glob模块,因为它可以进行模式匹配。
$ python dummy.py
['Dockerfile', 'docker-compose.yml', '53009790.py', 'MOCK_DATA.csv', '53021557.py', '53023079.py']
$ python3 dummy.py
['Dockerfile', 'docker-compose.yml', '53009790.py', 'MOCK_DATA.csv', '53021557.py', '53023079.py']
OS模块和glob之间的主要区别在于OS可以在所有系统上运行,而glob仅适用于Unix。