Я хочу, получают список имен файлов с шаблоном поиска с подстановочным знаком. Как:
getFilenames.py c:\PathToFolder\*
getFilenames.py c:\PathToFolder\FileType*.txt
getFilenames.py c:\PathToFolder\FileTypeA.txt
Как я могу сделать это?
Вот так:
>>> import glob
>>> glob.glob('./[0-9].*')
['./1.gif', './2.txt']
>>> glob.glob('*.gif')
['1.gif', 'card.gif']
>>> glob.glob('?.gif')
['1.gif']
Это взято прямо отсюда: http://docs.python.org/library/glob.html
glob
полезен, если вы делаете это в python, однако ваш shell может не передавать *
(я не знаком с windows shell).
Например, когда я делаю следующее:
import sys
print sys.argv
В моей оболочке я набираю:
$ python test.py *.jpg
Я получаю следующее:
['test.py', 'test.jpg', 'wasp.jpg']
Обратите внимание, что argv
не содержит "*.jpg"
Важным уроком здесь является то, что большинство оболочек расширят звездочку в shell, прежде чем она будет передана вашему приложению.
В данном случае, чтобы получить список файлов, я бы просто сделал sys.argv[1:]
. В качестве альтернативы можно экранировать *
, чтобы python увидел литерал *
. Затем вы можете использовать модуль glob
.
$ getFileNames.py "*.jpg"
или
$ getFileNames.py \*.jpg
from glob import glob
import sys
files = glob(sys.argv[1])