Mar*_*tin 71
像这样:
>>> import glob
>>> glob.glob('./[0-9].*')
['./1.gif', './2.txt']
>>> glob.glob('*.gif')
['1.gif', 'card.gif']
>>> glob.glob('?.gif')
['1.gif']
Run Code Online (Sandbox Code Playgroud)
这直接来自这里:http://docs.python.org/library/glob.html
Don*_*ner 19
glob
如果你在python中这样做是有用的,但是,你的shell可能没有传入*
(我不熟悉windows shell).
例如,当我执行以下操作时:
import sys
print sys.argv
Run Code Online (Sandbox Code Playgroud)
在我的shell上,我键入:
$ python test.py *.jpg
Run Code Online (Sandbox Code Playgroud)
我明白了:
['test.py', 'test.jpg', 'wasp.jpg']
Run Code Online (Sandbox Code Playgroud)
请注意,argv
不包含"*.jpg"
这里的重要教训是,在将shell传递给应用程序之前,大多数shell都会在shell中展开星号.
在这种情况下,要获取文件列表,我会这样做sys.argv[1:]
.或者,您可以逃避*
,以便python看到文字*
.然后,您可以使用该glob
模块.
$ getFileNames.py "*.jpg"
Run Code Online (Sandbox Code Playgroud)
要么
$ getFileNames.py \*.jpg
Run Code Online (Sandbox Code Playgroud)
s3c*_*ur3 12
如果您使用的是 Python 3.5+,则可以使用pathlib
'sglob()
代替glob
单独使用模块。
获取目录中的所有文件如下所示:
from pathlib import Path
for path in Path("/path/to/directory").glob("*"):
print(path)
Run Code Online (Sandbox Code Playgroud)
或者,要获取.txt
目录中所有文件的列表,您可以这样做:
from pathlib import Path
for path in Path("/path/to/directory").glob("*.txt"):
print(path)
Run Code Online (Sandbox Code Playgroud)
最后,您可以使用通配符目录递归搜索(即查找.txt
目标目录和所有子目录中的所有文件):
from pathlib import Path
for path in Path("/path/to/directory").glob("**/*.txt"):
print(path)
Run Code Online (Sandbox Code Playgroud)