跳过文件是否与给定文本匹配

问题描述 投票:0回答:1

我有此代码

for file in glob.glob("[!Skip]*.xlsm"):
....run various code

参数是,如果文件名以“ Skip”开头,则不要将此代码应用于文件夹中的那些文件。它工作得很漂亮。但是有时,即使名称不是以skip开头,它也会跳过文件。

怎么来?

如果我将代码更改为“ * .xlsm”,它将在文件上运行。因此,文件本身没有错。

python loops enumerate skip
1个回答
0
投票

您以错误的方式使用[!pattern]。看我的小例子。

import glob
import os
os.chdir('stof_names')
print(f"{glob.glob('*.txt')}")  # ['dont_Skip.txt', 'i.txt', 'Skip.txt', 'Skipme.txt', 'Spik_me.txt', 'S_me.txt']
print(f"{glob.glob('[!Skip]*.txt')}")  # ['dont_Skip.txt'] oops Where are my 'Spik_me.txt' and S_me.txt ans i.txt ?
# this happens because [!Skip] matches all symbols besides any of ['S','k','i','p']
# simplest solution, use 'filter' function
print(f"{list(filter(lambda x: not x.startswith('Skip'), glob.glob('*.txt')))}")
# ['dont_Skip.txt', 'i.txt', 'Spik_me.txt', 'S_me.txt']
© www.soinside.com 2019 - 2024. All rights reserved.