Python mit linux und wine (String escapen)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
djevil
User
Beiträge: 41
Registriert: Montag 22. August 2016, 14:28

Python mit linux und wine (String escapen)

Beitragvon djevil » Mittwoch 26. April 2017, 14:52

Hallo, ich versuche gerade ein Windows Spiel mit wine zu öffnen.

Der Python Code ist zwar einfach:

  1. import subprocess
  2.  
  3. ## bash command
  4. ## wine '/home/stu/.wine/drive_c/Program Files (x86)/Deep Silver/Risen/bin/Risen.exe'
  5.  
  6. ## das habe ich probiert:
  7. path = "'wine /home/stu/.wine/drive_c/Program Files (x86)/Deep Silver/Risen/bin/Risen.exe'"
  8. path2 = "'wine\ /home/stu/.wine/drive_c/Program\ Files\ (x86)/Deep\ Silver/Risen/bin/Risen.exe'"
  9.  
  10. subprocess.run(path2, shell=True)


Dennoch bekomme ich es nicht zum laufen. Wie muss ich richtig escapen?

Und gibt es vielleicht auch eine allgemein bessere Art so welche Probleme zu handeln, oder sich funktionierende Pfade ausgeben bzw. berechnen zu lassen?

Mfg djevil
Sirius3
User
Beiträge: 6006
Registriert: Sonntag 21. Oktober 2012, 17:20

Re: Python mit linux und wine (String escapen)

Beitragvon Sirius3 » Mittwoch 26. April 2017, 15:20

@djevil: subprocess.run gibt es nicht, Du meinst vielleicht subprocess.call. shell=True sollte eigentlich nie nötig sein, wenn man nicht explizit Fähigkeiten der Shell braucht. call braucht dann eine Liste, womit klar wird, wie sich die Parameter aufteilen, ohne dass man escapen muß:

  1. path = "/home/stu/.wine/drive_c/Program Files (x86)/Deep Silver/Risen/bin/Risen.exe"
  2. subprocess.call(['wine', path])
djevil
User
Beiträge: 41
Registriert: Montag 22. August 2016, 14:28

Re: Python mit linux und wine (String escapen)

Beitragvon djevil » Mittwoch 26. April 2017, 16:44

Hi, Sirius3,

subprocess.run ist lediglich Python3.5.

subprocess.call(['wine', 'notepad.exe'])

funktioniert.

Code: Alles auswählen

    path = "/home/stu/.wine/drive_c/Program Files (x86)/Deep Silver/Risen/bin/Risen.exe"
    subprocess.call(['wine', path])


Mach aber immer noch Probleme,
ausser, wenn man subprocess.call(['wine', 'Risen.exe']) im selben Ordner startet.

MFG
Benutzeravatar
__deets__
User
Beiträge: 616
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: Python mit linux und wine (String escapen)

Beitragvon __deets__ » Mittwoch 26. April 2017, 16:51

Was sagt denn os.path.exists(path)? Und wenn das geht, kannst du mit os.chdir(os.dirname(path)) erstmal in das bin-Verzeichnis wechseln. Falls das klapp dann koenntest du auch noch statt os.chdir zu benutzen (und damit deinen Python-Prozess zu veraendern) stattdessen das working-directory mittels des cwd-Parameters uebergeben.
djevil
User
Beiträge: 41
Registriert: Montag 22. August 2016, 14:28

Re: Python mit linux und wine (String escapen)

Beitragvon djevil » Mittwoch 26. April 2017, 17:42

Yupp, das geht schonmal ;)

Wie geht es denn ohne os.chdir?

MFG djevil
Benutzeravatar
BlackJack
Moderator
Beiträge: 32712
Registriert: Dienstag 25. Januar 2005, 23:29
Wohnort: Berlin
Kontaktdaten:

Re: Python mit linux und wine (String escapen)

Beitragvon BlackJack » Mittwoch 26. April 2017, 17:50

@djevil: Mit dem `cwd`-Argument von `call()`.
“XML combines all the inefficiency of text-based formats with most of the unreadability of binary formats :-)” — Oren Tirosh, c.l.p, 2002
djevil
User
Beiträge: 41
Registriert: Montag 22. August 2016, 14:28

Re: Python mit linux und wine (String escapen)

Beitragvon djevil » Mittwoch 26. April 2017, 18:08

Super, dann hab ich's ja bald zusammen,

schönen Dank euch allen!

Jetzt muss ich los..

MFG d

Zurück zu „Allgemeine Fragen“

Wer ist online?

Mitglieder in diesem Forum: __deets__, Bing [Bot]