Ищите файл с помощью подстановочного знака

Я хочу, получают список имен файлов с шаблоном поиска с подстановочным знаком. Как:

getFilenames.py c:\PathToFolder\*
getFilenames.py c:\PathToFolder\FileType*.txt
getFilenames.py c:\PathToFolder\FileTypeA.txt

Как я могу сделать это?

42
задан Bart 17 January 2014 в 23:57
поделиться

3 ответа

Вот так:

>>> 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

71
ответ дан 26 November 2019 в 23:34
поделиться

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
19
ответ дан 26 November 2019 в 23:34
поделиться
from glob import glob
import sys

files = glob(sys.argv[1])
5
ответ дан 26 November 2019 в 23:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: