Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:遍历多个字典中的文件_Python - Fatal编程技术网

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

Python:遍历多个字典中的文件,python,Python,我在字典中有许多文件,我想在这些文件上运行脚本。 通常,我会使用“os.listdir()”列出当前工作目录中的文件,然后告诉脚本在这些文件上运行 例如: dir = os.listdir(): for i in dir: do stuff 但是,当我不在当前工作目录中时,我希望在这些文件上运行脚本。这将使我可以在以后迭代多个文件夹。 有什么建议吗?listdir()采用路径参数。您可以使用以下内容: filelist1 = os.listdir("/home/user/directory

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

例如:

dir = os.listdir():
for i in dir:
  do stuff
但是,当我不在当前工作目录中时,我希望在这些文件上运行脚本。这将使我可以在以后迭代多个文件夹。 有什么建议吗?

listdir()
采用
路径
参数。您可以使用以下内容:

filelist1 = os.listdir("/home/user/directory1")
filelist2 = os.listdir("/home/user/directory2")

要读取目录下的所有可用文件,请执行以下操作:

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)
要列出目录中所有可用的子目录,请执行以下操作:

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)
现在,让我们结合这些谜题,只列出父目录子目录中的文件:

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)
示例输出:

$ 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']
您还可以尝试使用模块,因为它可以进行模式匹配

>>> import glob
>>> print(glob.glob('/home/rszamszur/*.sh'))
['/home/rszamszur/work-monitors.sh', '/home/rszamszur/default-monitor.sh', '/home/rszamszur/home-monitors.sh']

OS模块和glob之间的关键区别在于,OS将适用于所有系统,其中glob仅适用于类似Unix的系统。

OS.listdir()
采用路径参数。您可以告诉它列出任何目录中的文件,而不考虑您当前的工作目录。请参阅此处的文档:问题似乎是,当我列出文件时,无法以相同的方式加载它们。例如:dir=os.listdir('path to dictionary'),用于dir:something=load_文件中的数据,并执行上面无法执行的操作,因为它将文件作为列表中的字符串读取(我认为)@Wychh不清楚您的问题是什么
os.listdir()
将为您提供指定路径中的文件名列表,然后您可以只
open()
打开这些文件中的每一个,并对它们进行处理。也许你可以举一个例子来说明你想做什么。