2017-11-13 9 views
2

이 인용 ') TEST.BAT 전에 처음 system_call()에 잘못된 구문은 말하는 것. . 이 문제를 어떻게 해결할 수 있습니까? 나는 잘못된 일을하는 것 같지 않습니다. (파이썬 새로운 오전 .)이 따옴표로 내가 뭘 잘못하고 있니?

import os 

import subprocess 

def system_call(command): 

r = subprocess.call("cmd.exe /K " + "%s" % command,shell=False) 
print (r) 

system_call(r 'echo “@ECHO OFF\nECHO.\nECHO\n This is a batch file\nECHO.\nPAUSE\nCLS\nEXIT” > C:\Users\User\Desktop\test.bat ') 

system_call('cd C:\Users\User\Desktop\ ') 

system_call('test') 
+0

한 단어 : "smart quotes". 잠깐, 그건 두 단어 다 :-)하지만 파이썬이 완벽하게 적절한 파일 I/O를 가지고있을 때 왜'subprocess ... echo'를 호출하여 파일을 만들겠습니까? 어쨌든, 서브 프로세스 내의'cd'는 다음 서브 프로세스 호출로 이어지지 않을 것입니다. – paxdiablo

답변

1

코드의이 섹션을 둘러싼 인용 부호를 변경해보십시오,

“@ECHO OFF\nECHO.\nECHO\n This is a batch file\nECHO.\nPAUSE\nCLS\nEXIT” 

변경하는 방법 원래 따옴표 공지 사항

"@ECHO OFF\nECHO.\nECHO\n This is a batch file\nECHO.\nPAUSE\nCLS\nEXIT" 

에 (당신의 코드)는 커브를 가지고 있는데, 나는 그것을 직선적 인, 공상적인 인용으로 대체했다. 내 경험상, 멋진 것들은 때때로 문제를 일으킬 수 있습니다.

P. 이것은 Stack over flow에 대한 나의 첫 번째 대답이다. 그래서 나는 찌르다. :) 도움이 되었으면 좋겠다.

+0

작동하지 않았습니다 ... 인용 부호를 변경했지만. –

+0

's/내 경험에/매번 /':-) – paxdiablo