Python 如果枚举中的文件与给定文本匹配,则跳过该文件
我有这个密码Python 如果枚举中的文件与给定文本匹配,则跳过该文件,python,loops,enumerate,skip,Python,Loops,Enumerate,Skip,我有这个密码 for file in glob.glob("[!Skip]*.xlsm"): ....run various code 参数是,如果文件名以“Skip”开头,则不要将此代码应用于文件夹中的那些文件。它工作得很好。但是,有时它会跳过文件,即使文件名不是以skip开头 为什么 如果我将代码更改为“*.xlsm”,它将在文件上工作。因此,文件本身没有问题。您以错误的方式使用[!pattern]。 看看我的小例子 import glob import os os.chdir('stof
for file in glob.glob("[!Skip]*.xlsm"):
....run various code
参数是,如果文件名以“Skip”开头,则不要将此代码应用于文件夹中的那些文件。它工作得很好。但是,有时它会跳过文件,即使文件名不是以skip开头
为什么
如果我将代码更改为“*.xlsm”,它将在文件上工作。因此,文件本身没有问题。您以错误的方式使用[!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']
您是否有更多信息,例如:您的问题是否始终适用于特定文件,如果是,名称是什么?@Pac0否,它不适用于特定文件。所以我想知道我的代码是否有问题?代码读取以“Skip”开头的find文件,一个单词中没有空格,对吗?嗨,谢谢你的回答。对不起,我不知道怎么让它工作<代码>对于({list(filter(lambda x:not x.startswith('Skip'),glob.glob('*.xlsm')))})中的文件:以上返回类型错误:不可损坏的类型:“list”