在Python中循环访问文件目录

2024-06-08 04:32:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经99%地完成了我的第一个python脚本,但是我遇到了一个相当于对目录中的文件执行for-each循环的问题。我的脚本适用于单个文件,但我不确定如何将其应用于多个文件,一次一个。在

我有一个路径path = ~/documents和一个包含要排除的文件名的XML文件:

 <root><synced name="Already Synced"><sfile name="Filename">base</sfile><sfile name="Filename">File1.blah</sfile><sfile name="Filename">File2.blah</sfile><sfile name="Filename">File3.blah</sfile></synced></root>

比如说,我如何在以*.blah结尾且不在XML文件中的所有文件上运行脚本?在

我有这个,但这是不可能的:

^{pr2}$

非常感谢你能提供的任何帮助。在


Tags: 文件pathname路径目录脚本forroot
2条回答
path = '~/documents'

这不会给您主目录中的documents文件夹。~实际上并不代表主目录,让我们把它当作一个shell来使用,就像它通常是在进行tilde扩展一样。没有它,~可以是任何文件或目录的名称,python将其视为这样。要正确获取,请使用:

^{pr2}$
import fnmatch
import os

path = os.path.expanduser('~/documents')
tree = ET.parse("sync_list.xml")
root = tree.getroot()
synced = [elt.text for elt in root.findall('synced/sfile')]
for filename in os.listdir(path):
    if fnmatch.fnmatch(filename, '*.blah') and filename not in synced:
        filename = os.path.join(path, filename)

编辑:已添加os.path.expanduser操作系统,如@mata所建议。在

相关问题 更多 >

    热门问题