0

CLI 인수를 사용하여 .xls/.xlsx 파일을 .csv로 변환하는 Python 스크립트를 개발 중입니다. .xsl/.xlsx 파일은 여러 시트를 가질 수 있으므로 각 시트를 개별 .csv 파일로 개별적으로 변환해야합니다. 내가하고 싶은 것은 argparse를 사용하여 변환 할 시트를 지정하는 필수 매개 변수를 추가하고 결과 .csv의 이름을 지정하는 선택적 매개 변수를 사용하는 것입니다. 반복 가능한 매개 변수 쌍이있는 Python argparse 인수

python converter.py --sheets <sheet-name> [sheet-rename] 

그래서 나는이 사용 argparse 같은 두 개의 매개 변수에 인수를 추가하는 방법을 잘 모르겠어요 : 여기에 내가 명령이보고 싶은 방법의 예입니다.

또한이 인수에 더 많은 기능을 추가하고 싶습니다. 가능한 경우 더 많은 시트를 변환 할 수 있도록 인수를 반복 할 수 있도록하고 싶습니다. 나는 명령 구문이 어떻게 보일지 모르겠지만 이런 일이 :

python converter.py --sheets (<sheet-name> [sheet-rename])... 
python converter.py --sheets sheet1 sheet1_rename sheet2 sheet2_rename 

이 너무 복잡 끝나게 수 있지만 모든 입력은 좋은 것입니다.

답변

1

--sheet은 두 개의 인수를 취하는 옵션으로 정의 할 수 있습니다. 두 인수는 모두 목록에 누적됩니다.

p.add_argument('--sheet', action='append', nargs=2) 

목록의 목록을 생성 할 것이다 python converter.py --sheet old1 new1 --sheet old2 new2를 호출 :

>>> print p.parse_args("--sheet old1 new1 --sheet old2 new2".split()) 
Namespace(sheet=[['old1', 'new1'], ['old2', 'new2']]) 
+0

최고를! action = 'append'를 사용하여 목록을 만들기 위해 옵션 인수를 두 번 이상 호출 할 수 있다는 것을 알지 못했습니다. 내가 바꾸고 싶은 한가지는 이름 바꾸기 옵션을 제공하고 싶기 때문에 nargs = '+'로 설정하는 것입니다. 지정하지 않으면 .csv가 시트와 동일한 이름으로 저장됩니다. 감사! – dselgo

관련 문제