문제

나는 다음과 같은 일을하고 싶다 :

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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top