python读取文件夹中除"xyz"以外的所有文件

2 投票
5 回答
3067 浏览
提问于 2025-04-18 18:29

我想读取一个文件夹里的所有文件,但有一个文件叫“xyz”,我想跳过它,直接读取下一个文件。

现在我有以下这段代码:

for file in glob.glob('*.xml'):
    data = open(file).read()
    print(file)

显然,这段代码会读取文件夹里的所有文件。那么我应该怎么做才能跳过“xyz.xml”这个文件呢?

5 个回答

1

你可以使用glob来进行比较简单的模式匹配,但要记住,glob的匹配规则和正则表达式是不一样的!下面的代码可以帮助你排除所有以'X'开头的xml文件。

files = glob.glob('[!X]*.xml')
2
for file in [f for f in glob.glob('*.xml') if f != "xyz.xml"]:
    do_stuff()

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

2

试试这个,假设你要移除的元素在 glob.glob() 返回的列表里(如果不确定的话,可以把 remove() 这一行放在 try 块里):

lst = glob.glob('*.xml')
lst.remove('xyz.xml') # assuming that the element is present in the list
for file in lst:
    pass

或者如果你在意内存的使用,可以用生成器:

for file in (file for file in glob.glob('*.xml') if file != 'xyz.xml'):
    pass
2

为了完整起见,因为没有人发布最明显的版本:

for file in glob.glob('*.xml'):
    if file != 'xyz.xml':
        data = open(file).read()
        print(file)
5

continue这个关键词在for循环中很有用,它可以让你跳过当前这次循环的剩下部分,直接进入下一次循环。

for file in glob.glob('*.xml'):
    if file=="xyz.xml":
        continue
    data = open(file).read()
    print(file)

撰写回答