Python:遍历多个词典中的文件

时间:2018-11-27 11:26:17

标签: python

我要在其上运行脚本的词典中有许多文件。 通常,我会使用“ os.listdir()”列出当前工作目录中的文件,然后告诉我的脚本在这些文件上运行。

例如:

dir = os.listdir():
for i in dir:
  do stuff

但是,当我不在当前工作目录中时,我想在这些文件上运行脚本。这样,以后我就可以遍历多个文件夹。 有什么建议吗?

2 个答案:

答案 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。