2012-08-28 6 views
0

저는 여러 개의 파일을 처리 할 수있는 작은 스크립트를 작성하고 있습니다. 그래서 파일을 쉼표로 구분하여 전달하고 arg.split (',')을 수행 한 다음 각각을 처리하도록 추가했습니다. 별표가 전달되었을 때의 비단뱀 동작

지금 내가

folder/firstFileInFolder.txt 

를 얻을 내가 옵션 -i 오른쪽으로 인수를 인쇄 할 경우 내가 처음 액세스 할 때

python myPythonScript.py -i folder/* 

같이 입력 가능성으로 별표를 추가 싶었어요 하지만 내 전화 번호를

python myPythonScript.py -i someFolder/someFile,folder/* 

으로 전화하면됩니다. 누구나 아이디어가 있습니까, 왜 파이썬이 그런 식으로 행동할까요?

+7

이것은 파이썬이 아닙니다. 여러분의 쉘입니다. – tuxtimo

+0

여러 파일을 전달하는 표준 접근법은 쉘이 입력을 별도의 인수로 전달하는 입력을 허용하는 것입니다. 쉼표로 구분하지 마십시오. 전달 된 파일의 내용을 반복한다면 Python의'fileinput' 모듈이 유용 할 것입니다. –

답변

1

시도는이 스크립트를 파이썬을보기 전에 *

쉘이 별표를 확장

import sys 

for arg in sys.argv: 
    print arg 

파이썬 script.py를 실행합니다.

+2

또는 그냥'print sys.argv' :) – nneonneo

+0

@nneonneo 거기에있어 :) –

+0

어떻게 확장 전체 목록을 얻을 수 있습니까? 지금이 있습니다 'elif opt == '-i': all_documents = arg.split (',')' 쉼표 뒤에있는 입력을 확장하도록 쉘을 가져올 수 있습니까? – user857990

0

주석에서 언급했듯이 쉘은 쉼표로 구분되지 않은 대/소문자의 경우 별표를 확장합니다. 두 번째 예제에서와 같이 사용자가 별표를 파일 이름의 일부로 지정할 수 있다는 것을 알고 있다면 glob 모듈을 사용하여 파이썬이 경로 확장을 수행하게 할 수 있습니다. 쉘 또는 파이썬 중 하나가이 같은 보일 수 있습니다 별표 확장을 할 수 있도록 할

from glob import glob 
glob('*') 

코드 : 구분 기호로 쉼표를 사용하여, 귀하의 경우에는

import glob 
file_list = [] 
for pattern in sys.argv[1:]: 
    file_list.extend(glob.glob(pattern)) 

은을 사용하지 못하도록 다음 것 파일 이름의 일부로 쉼표.

관련 문제