Python Ungültige Syntax bei os.sytem

  • Ersteller Ersteller kcinay055679
  • Erstellt am Erstellt am
K

kcinay055679

Gast
Python:
import OS

os.system(cd C:\Users\yamin\Desktop\Wlan)
os.system(rename test.txt TEST.bat)
Ich wollte folgenden Code testen aber beim "C" vom Pfad stopt das programm mit der fehlermeldung ungültige sytnax

Was mache ich falsch??
 
Das Kommando muss ein String sein.

os.system("rename test.txt TEST.bat")
 
  • Gefällt mir
Reaktionen: abcddcba
https://docs.python.org/3/library/os.html#os.system
Execute the command (a string) in a subshell.

Ich tippe jetzt einfach mal, wenn du die Kommandos als Strings übergibst, funktioniert es wahrscheinlich.

Unter Umständen ist es in dem konkreten Fall sinnvoller, die von "os" bereitgestellte Funktionalität zu benutzen, z.B.:
  • os.chdir()
  • os.rename()

Hier bietet es sich auf jeden Fall, in der Doku ein wenig zu lesen, welche Nebenwirkungen das haben könnte oder warum bzw. wann man diese Funktionen eher nicht benutzen sollte.
 
Zuletzt bearbeitet:
Das funktioniert so weit aber dann bekomme ich folgende Fehlermeldung:
unicode error unicodeescape codec can't decode bytes in position 5-6

Was jetzt
 
Code:
# importing os module 
import os 
 
# Command to execute
# Using Windows OS command
cmd = 'rename C:\Users\yamin\Desktop\Wlan\test.txt C:\Users\yamin\Desktop\Wlan\TEST.bat'
 
# Using os.system() method
os.system(cmd)

Das "Hacken" von WLAN-Passwoertern laest Dich wohl nicht los? @kcinay055679 ;)
 
und ich vermute mal das der wechsel in das Verzeichnis und danach das rename ohne absolute pfadangabe auch zuproblemen fürht. ich gehe mal vorsichtig davon aus, das jedes mal eine "neue" shell gestartet wird zum ausführen des kommandos
 
kcinay055679 schrieb:
Python:
import OS

os.system(cd C:\Users\yamin\Desktop\Wlan)
os.system(rename test.txt TEST.bat)
Ich wollte folgenden Code testen aber beim "C" vom Pfad stopt das programm mit der fehlermeldung ungültige sytnax

Was mache ich falsch??

das zweite os.system() weiss vom ersten nichts, da es 2 unabhängige subshells sind, daher wird das rename nicht in deinem zielverzeichnis ausgeführt. benutz einfach os.rename() mit vollständigem pfad zu beiden dateien. und benutz nicht '\' - damit werden escape sequenzen eingeleitet. benutz einfach "C:/Users/yamin/Desktop/Wlan" - das geht auch unter windows.
 
  • Gefällt mir
Reaktionen: KillerCow
kcinay055679 schrieb:
Das funktioniert so weit aber dann bekomme ich folgende Fehlermeldung:
unicode error unicodeescape codec can't decode bytes in position 5-6

Was jetzt
Backslashes "escapen". "\U..." wird ansonsten als Unicodesequenz interpretiert.
 
grade ausprobiert, die shells sind unabhängig. wenn du dein script allerdings schon in "C:\Users\yamin\Desktop\Wlan" ausführst, dann geht das, aber das erste "cd" ist dann wirkungslos.

Code:
$ mkdir test
mkdir: created directory 'test'
$ python -c 'import os; os.system("cd test"); os.system("touch bla.txt")'
$ ls -a test/
./  ../
$ ls bla.txt
bla.txt

bla.txt wird im "current working dir" angelegt, nicht vermeindlich im "test" verzeichnis.
 
  • Gefällt mir
Reaktionen: KillerCow
Zurück
Oben