와일드 카드로 인수를 파이썬 스크립트로 전달합니다
-
03-07-2019 - |
문제
나는 다음과 같은 일을하고 싶다 :
c:\data\> python myscript.py *.csv
디렉토리의 모든 .csv 파일을 내 Python 스크립트에 전달합니다 ( sys.argv
포함 ["file1.csv", "file2.csv"]
, 등.)
하지만 sys.argv
그냥받습니다 ["*.csv"]
와일드 카드가 확장되지 않았 음을 나타내므로 작동하지 않습니다.
이 작업을 수행하는 간단한 방법이 있다고 생각하지만 Google에서는 찾을 수 없습니다. 어떤 아이디어?
해결책
글로벌 모듈을 사용할 수 있습니다. 예를 들어 특정 쉘의 동작에 의존하지 않을 수 있습니다 (음, 여전히 인수를 확장하지 않는 쉘에 의존하지만 적어도 와일드 카드를 피함으로써 유닉스에서 이런 일이 발생할 수 있습니다. :-)).
from glob import glob
filelist = glob('*.csv') #You can pass the sys.argv argument
다른 팁
UNIX에서 쉘은 와일드 카드를 확장하므로 프로그램은 확장 된 파일 이름 목록을 얻습니다. Windows는이 작업을 수행하지 않습니다. 쉘은 와일드 카드를 프로그램으로 직접 통과시켜 자체를 확장해야합니다.
vinko가 맞습니다 : 글로그 모듈은 작업을 수행합니다.
import glob, sys
for arg in glob.glob(sys.argv[1]):
print "Arg:", arg
제휴하지 않습니다 StackOverflow