2017-11-13 8 views
2

Es ist zu sagen, dass das Zitat ' nach test.bat und vor ) im ersten system_call() ungültigen Syntax ist. . Wie kann ich das beheben? Ich mache anscheinend nichts falsch. (I bin neu in Python.)Was mache ich hier falsch mit diesen Zitaten?

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

Ein Wort hilft: „typografische Anführungszeichen“. Warte, das sind zwei Worte :-) Aber warum würdest du 'subprocess ... echo' nennen, um eine Datei zu erstellen, wenn Python vollkommen passende Datei-I/O-Sachen hat? In jedem Fall ist es unwahrscheinlich, dass ein "cd" innerhalb eines Unterprozesses in den nächsten Unterprozessaufruf übergeht. – paxdiablo

Antwort

1

Versuchen Sie, die Anführungszeichen zu ändern Codeabschnitt umgibt,

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

Wechsel zu

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

Beachten Sie, wie die ursprünglichen Anführungszeichen (Ihr Code) hat eine Kurve zu ihnen, wo ich diese mit geraden, nicht phantastischen Zitaten ersetzt habe. Nach meiner Erfahrung können die Ausgefallenen manchmal Probleme verursachen.

P.S. Dies ist meine erste Antwort hier auf Stack über Strömung, so nehme ich einen Stich an sie hoffen :) es

+0

Hat nicht funktioniert ... obwohl ich die Anführungszeichen geändert habe. –

+0

's/Nach meiner Erfahrung/Jedes einzelne Mal/':-) – paxdiablo