以下代码列出了以"hello"
开头的目录中的所有文件:
import glob
files = glob.glob("hello*.txt")
如何选择不以"hello"
开头的其他文件?
答案 0 :(得分:7)
如何仅使用glob:
匹配所有文件:
>>> glob.glob('*')
['fee.py', 'foo.py', 'hello.txt', 'hello1.txt', 'test.txt', 'text.txt']
>>>
仅匹配hello.txt
:
>>> glob.glob('hello*.txt')
['hello.txt', 'hello1.txt']
>>>
不使用字符串hello
进行匹配:
>>> glob.glob('[!hello]*')
['fee.py', 'foo.py', 'test.txt', 'text.txt']
>>>
不使用字符串hello
进行匹配,但以.txt
结尾:
>>> glob.glob('[!hello]*.txt')
['test.txt', 'text.txt']
>>>
答案 1 :(得分:2)
根据glob
模块的documentation,它可以通过协同使用os.listdir()和fnmatch.fnmatch()函数来工作,而不是通过实际调用子shell。
os.listdir()
返回指定目录中的条目列表,fnmatch.fnmatch()
为您提供unix shell样式的通配符,使用它:
import fnmatch
import os
for file in os.listdir('.'):
if not fnmatch.fnmatch(file, 'hello*.txt'):
print file
希望有所帮助。
答案 2 :(得分:0)
您只需使用"*"
模式匹配所有文件,然后清除您不感兴趣的文件,例如:
from glob import glob
from fnmatch import fnmatch
files = [f for f in glob("*") if not fnmatch(f, "hello*.txt")]