2012-07-06 2 views
-2

좋아요. 파이썬을 윈도우와 함께 사용하면 파일을 옮기는 "이동"명령 인 배치 명령을 실행하려고합니다. 나는 그것이 파이썬에서 shutil을 사용하여 완료 될 수 있다는 것을 알고 있지만, 그것은 나에게 곤경을 줬다.파이썬 하위 프로세스가 이동 명령으로 작동하지 않는 이유는 무엇입니까?

move /-y "%~dp0itself.py" "C:\folder\folder2\" 

혼자서 배치 파일로 실행할 때 완벽하게 작동합니다.

import subprocess 
    process = subprocess.Popen(move /-y "%~dp0sarpedon.py" "C:\Utility\Config\", shell=True, stdout=subprocess.PIPE) 
process.wait() 
print process.returncode 

가 나는 오류가 계속하지만, 파이썬에서 다른 코드의 끝 부분에 그것이 내가 때문에

"%~dp0sarpedon.py (") 

시도의 많은의 끝에서의 잘못된 구문이 말한다 추가하는 시도 폐쇄가

(move /-y "%~dp0sarpedon.py" "C:\Utility\Config\", shell=True, stdout=subprocess.PIPE ")" 
01 괄호 때문에

EOL while scanning string literal. 

: 나는 그것이 오류로 종료 수정하는 데 사용할

어떻게 해결할 수 있습니까?

+0

당신은 에코 명령이 연습을 할 수 있습니다 문자열 :. 당신이 사용하는 하위 프로세스에 헌신이라면 분리기의 모든

하여 이동 및 대상 명령에 대한 결합 된 문자열로 다음을 시도 [tutorial] (http://docs.python.org/tutorial/introduction.html) 및 [라이브러리 참조] (http://docs.python.org/library/stdtypes.html#sequence- 보통의 es-str-unicode-list-tuple-bytearray-buffer-xrange) – SiggyF

답변

0

셔틀이 제공 한 문제를 지정할 수 있습니까? 이중 백 슬래시를 잊었 니? 아니면 파일이나 디렉토리에 관리자 권한이 필요합니까?

다음과 같은 오류가 발생 했습니까?

import shutil 
shutil.move("%~dp0itself.py", "C:\\folder\\folder2") 

내 64 비트 Windows 컴퓨터에서 실행하면이 줄이있는 파일이 이동했습니다.

코드가 작동하지 않는 이유는 \ "때문에 두 개의 백 슬래시를 사용하십시오. \ 또는 문자열 해석기가 문자열을 끝내지 않을 것입니다. 아니면 이상한 문자를 생성합니다 .

import subprocess 
process = subprocess.Popen("move /-y %~dp0sarpedon.py C:\\Utility\\Config\\", 
          shell=True, stdout=subprocess.PIPE) 
1

Popen의 작동 방식에 대한 문서를 읽어야합니다. 괄호 사이에 명령 줄을 덤프 할 수는 없습니다. 명령과 인수를 목록의 문자열로 전달해야합니다. the documentation을 읽으십시오.

+0

실제로 많은 도움을 주셔서 감사합니다! – harry

관련 문제