2012-08-29 2 views
2

Linux에서 완벽하게 작동하는 반면 Windows에서는 명령을 실행할 때 문제가 있습니다.Python : Windows에서 복잡한 명령 실행

나는 컨텍스트를 제공하지만, 내 문제를 이해하는 데 반드시 필요한 것은 아닙니다. 배치 모드에서 gimp를 사용하고 있습니다.

다른 파이썬 스크립트 인 pythonFu.py을 호출하는 파이썬 스크립트 callPythonFuScript.py이 있습니다.이 스크립트는 python-fu 호출을 실행합니다.

callPythonFuScript.py에서 pythonFu.py 내부의 함수를 호출하면 명령 줄이 생성됩니다. 이 명령은 다음과 같습니다.

gimp-console-2.8 -idf --batch-interpreter python-fu-eval -b 'import sys;sys.path=['.']+sys.path;import pythonFu;pythonFu.myFunction("arg1","arg2","arg3") ' -b 'pdb.gimp_quit(1)' 

이 명령은 Linux에서 완벽하게 작동하지만 Windows에서 실행하려고하면이 명령이 작동하지 않습니다.

오류 메시지는 다음과 같습니다 내가 윈도우 리눅스 다르게 문자를 해석하는 가정입니다

The opening of C:\Users\myRep\sys; failed : no such file or directory 
The opening of C:\Users\myRep\sys.path=['.']+sys.path; failed : no such file or directory 
The opening of C:\Users\myRep\"arg1","arg2","arg3")' failed no such file or directory 

. 이 올바른지? 이 문제를 어떻게 해결할 수 있습니까? 그 여전히 제공하는 경우

-b 'import sys;sys.path=["."]+sys.path;import pythonFu;pythonFu.myFunction("arg1","arg2","arg3")' 

을 :

코멘트에서 언급 한 바와 같이
+1

합니까 교체''''와'' "''명령 줄 도움말에 –

+0

아니 그것은하지 않습니다 당신이 알고 있다면?. pythonfu -b "비트가 하나의 명령을 실행합니다.("arg1", "arg2", "arg3") 'sys.path = ['. '] + sys.path; importpythonFu; pythonFu.myFunction ("arg1", "arg2", "arg3")' 두 번째 질문은 작동합니다. 즉, -b 'pdb.gimp_quit (1)' 답변을 주셔서 감사합니다. 다른 의견이 있으십니까? – user1530966

답변

0

, 명령 프롬프트가 인수로보고, 무엇을 평가 후면 파이썬에 대한 리터럴 문자열로 전달되는 내용 사이의 탈출 문제가있는 당신이 오류, 당신이 따옴표를 이스케이프해야 가능하다 :

-b 'import sys;sys.path=[\".\"]+sys.path;import pythonFu;pythonFu.myFunction(\"arg1\",\"arg2\",\"arg3\")' 
+0

Thanks jdi, 여전히 작동하지 않습니다. 파이썬이 큰 따옴표로 실수를하지 않도록하는 좋은 해결책이었습니다. 하지만 올바른 문자열 ie -b 'import sys; sys.path = [ "."] + sys.path; import pythonFu; pythonFu.myFunction ("arg1", "arg2", "arg3")'이 windows 명령 행을 사용하면 큰 따옴표를 쉘과 다르게 해석합니다. 이 문제가 있다고 가정하고 있지만이를 수정하는 방법을 모르겠습니다. 나는 첫 번째 단계는 올바른 생각하지만 지금은 내가 파이썬 해킹에 의해 시작 했죠, 주위에 당신의 방법 파악하기 위해 파이썬으로 giben 문자열이 잘 다시 한번 감사 창으로 해석된다 쉬르, 승리자 – user1530966

+0

을해야 argv를 stdout으로 출력하는 스크립트. 그런 다음 입력 및 스크립트 출력을 비교하여 Windows 명령 행 처리를 수행 할 수 있습니다. –