Seite 1 von 1

Python mit linux und wine (String escapen)

Verfasst: Mittwoch 26. April 2017, 14:52
von djevil
Hallo, ich versuche gerade ein Windows Spiel mit wine zu öffnen.

Der Python Code ist zwar einfach:

Code: Alles auswählen

import subprocess

## bash command
## wine '/home/stu/.wine/drive_c/Program Files (x86)/Deep Silver/Risen/bin/Risen.exe'

## das habe ich probiert:
path = "'wine /home/stu/.wine/drive_c/Program Files (x86)/Deep Silver/Risen/bin/Risen.exe'"
path2 = "'wine\ /home/stu/.wine/drive_c/Program\ Files\ (x86)/Deep\ Silver/Risen/bin/Risen.exe'"

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

Re: Python mit linux und wine (String escapen)

Verfasst: Mittwoch 26. April 2017, 15:20
von Sirius3
@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ß:

Code: Alles auswählen

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

Re: Python mit linux und wine (String escapen)

Verfasst: Mittwoch 26. April 2017, 16:44
von djevil
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

Re: Python mit linux und wine (String escapen)

Verfasst: Mittwoch 26. April 2017, 16:51
von __deets__
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.

Re: Python mit linux und wine (String escapen)

Verfasst: Mittwoch 26. April 2017, 17:42
von djevil
Yupp, das geht schonmal ;)

Wie geht es denn ohne os.chdir?

MFG djevil

Re: Python mit linux und wine (String escapen)

Verfasst: Mittwoch 26. April 2017, 17:50
von BlackJack
@djevil: Mit dem `cwd`-Argument von `call()`.

Re: Python mit linux und wine (String escapen)

Verfasst: Mittwoch 26. April 2017, 18:08
von djevil
Super, dann hab ich's ja bald zusammen,

schönen Dank euch allen!

Jetzt muss ich los..

MFG d