와일드 카드로 검색 패턴을 사용하여 파일 이름 목록을 얻고 싶습니다. 좋아요 :와일드 카드를 사용하여 파일을 검색하십시오.
getFilenames.py c:\PathToFolder\*
getFilenames.py c:\PathToFolder\FileType*.txt
getFilenames.py c:\PathToFolder\FileTypeA.txt
어떻게하면됩니까? 이처럼
와일드 카드로 검색 패턴을 사용하여 파일 이름 목록을 얻고 싶습니다. 좋아요 :와일드 카드를 사용하여 파일을 검색하십시오.
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
from glob import glob
import sys
files = glob(sys.argv[1])
glob
는하지만, 파이썬에서이에서 일을하는 경우에 유용합니다, 당신의 쉘이 전달되지 않을 수 있습니다 *
(저는 Windows 쉘에 익숙하지 않습니다). 나는 다음 작업을 수행 할 때 예를 들어
: 내 껍질에
import sys
print sys.argv
, 내가 입력 : argv
하지 않는
['test.py', 'test.jpg', 'wasp.jpg']
공지 것을 :
$ python test.py *.jpg
내가이 얻을 포함 "*.jpg"
여기에서 중요한 교훈은 대부분의 셸이 응용 프로그램에 전달되기 전에 셸에서 별표를으로 확장한다는 것입니다.
이 경우 파일 목록을 얻으려면 sys.argv[1:]
을 사용하면됩니다. 또는 *
을 탈출하여 파이썬이 리터럴 *
을 볼 수 있도록 할 수 있습니다. 그런 다음 glob
모듈을 사용할 수 있습니다. 난 당신이 스크립트는 여러 쉘과 *
를 사용하여 여러 매개 변수를 사용하여 작업 할 때 매우 유용하다고 때문에
$ getFileNames.py "*.jpg"
또는
$ getFileNames.py \*.jpg
나는 이전에이를 추가하고있다.
당신은 모든 쉘에서 작동 뭔가를 원한다면, 당신은 (여전히 glob
사용) 다음을 수행 할 수 당신이 test
파일이 있고 t*
을 줄 경우는 (중복 생성 할 수 있음을
>>> import glob
>>> from functools import reduce # if using python 3+
>>> reduce(lambda r, x: r + glob.glob(x), sys.argv[1:], [])
주 te*
),하지만 당신은 단순히 set
사용하여 제거 할 수 있습니다
>>> set(reduce(lambda r, x: r + glob.glob(x), sys.argv[1:], []))
이 사용중인 쉘에 따라 매우 정확하지 않습니다. –