2011-07-02 2 views

답변

5

라인

arg0,input,key,output = sys.argv 

왼쪽에있는 4 개 개의 변수에 sys.argv에서 인수 목록을 압축을 풉니 다. sys.argv에는 세 개의 인수 만 있기 때문에 게시 한 오류 메시지와 함께 실패합니다 (스크립트 경로를 수동으로 전달해야 sys.argv의 첫 번째 요소로 표시됨).

(this answer에서) 명령 줄 인수를 전달하는 다른 방법을 시도해보십시오 문제가 해결되지 않을 경우

scriptEngine.Sys.argv = List.Make(new[] { 'input.7z', ... }); 

또는, 다음 파이썬 파일에 할당에서 arg0 변수를 제거하거나, 또는 C#의 첫 번째 인수로 스크립트 경로를 명시 적으로 추가하십시오.

+0

Arg0을 제거하면 문제가 해결되었습니다. IronPython/.NET이 인수를 다르게 처리하는 것 같습니다. 당신의 도움을 주셔서 감사합니다. – pfeds

+0

'sys.argv'는 인수 옵션에서 직접 설정됩니다. 거기에 스크립트 이름을 원한다면 직접 추가해야합니다. –

+0

최신 버전의 IronPython에는'ScriptEngine.Sys'가 없습니다. –

2

글자 그대로의 의미는 sys.argv에는 단지 3 개의 값만 있지만 4 개의 변수가 있습니다. (4 개의 값을 3 개의 변수로 압축 해제하려고하면 "압축 할 값이 너무 많습니다"라는 오류 메시지가 나타납니다.)

sys.argv에 왜 arg0이 없는지, 나도 몰라요. .NET이 이러한 경우에 인수를 처리하는 방식과 관련이 있다고 가정 할 수 있습니다. arg0을 제거하고 어떤 일이 발생하는지 확인하십시오.

+0

IronPython이 인수를 다르게 처리한다고 생각합니다. 나는 arg0을 제거하고 작동한다. – pfeds

관련 문제