# Probleme python et wine

**URL:** <https://www.debian-fr.org/t/probleme-python-et-wine/72364>\
**Category:** Programmation\
**Created:** [Janvier 15, 2017, 7:13 UTC](https://www.debian-fr.org/t/probleme-python-et-wine/72364 "2017-01-15T19:13:21Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![Elouan](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/e/ba8739/32.png) [@Elouan](https://www.debian-fr.org/u/Elouan)\
**Post date:** [Janvier 15, 2017, 7:13 UTC](https://www.debian-fr.org/t/probleme-python-et-wine/72364/1 "2017-01-15T19:13:21Z")

</div>

Bonjour,  
Je débute avec python et j’aimerai faire un script qui exécute des commande shell pour lancé un jeu qui tourne avec wine .  
J’ai donc un petit problème, quand j’utilise le module subprocess exécuté mes commandes il ne prend pas en compte les commande suivante.

```
import subprocess
subprocess.call ("wine cmd", shell=True)
subprocess.call ("cd /home/elouan/Documents/Programe/ConterStrike1.6/", shell=True)
subprocess.call ("start CS1.6.bat", shell=True)

```

et m’affiche:

```
 Wine CMD version 5.1.2600 (1.6.2)
    Z:\home\elouan\Documents>

```

svp vous pourait m’aider 😀

---

<div class="post-metadata">

**Author:** ![Almtesh](https://www.debian-fr.org/user_avatar/www.debian-fr.org/almtesh/32/10312_2.png) [@Almtesh](https://www.debian-fr.org/u/Almtesh)\
**Post date:** [Janvier 15, 2017, 9:55 UTC](https://www.debian-fr.org/t/probleme-python-et-wine/72364/2 "2017-01-15T21:55:40Z")

</div>

En fait, ton script est en train d’exécuter `wine cmd`. Tu veux faire quoi au juste ? Lancer `start CS1.6.bat` du dossier `/home/elouan/Documents/Programe/ConterStrike1.6/` avec le programme `wine cmd` ?

---

<div class="post-metadata">

**Author:** ![Elouan](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/e/ba8739/32.png) [@Elouan](https://www.debian-fr.org/u/Elouan)\
**Post date:** [Janvier 16, 2017, 6:03 UTC](https://www.debian-fr.org/t/probleme-python-et-wine/72364/3 "2017-01-16T18:03:31Z")

</div>

oui c’est ça ! 😀

---

<div class="post-metadata">

**Author:** ![Almtesh](https://www.debian-fr.org/user_avatar/www.debian-fr.org/almtesh/32/10312_2.png) [@Almtesh](https://www.debian-fr.org/u/Almtesh)\
**Post date:** [Janvier 17, 2017, 4:16 UTC](https://www.debian-fr.org/t/probleme-python-et-wine/72364/4 "2017-01-17T16:16:18Z")

</div>

Tu peux changer de répertoire vers `/home/elouan/Documents/Programe/ConterStrike1.6/` et lancer `wine start CS1.6.bat` à la place.

---

<div class="post-metadata">

**Author:** ![Elouan](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/e/ba8739/32.png) [@Elouan](https://www.debian-fr.org/u/Elouan)\
**Post date:** [Janvier 17, 2017, 7:40 UTC](https://www.debian-fr.org/t/probleme-python-et-wine/72364/5 "2017-01-17T19:40:13Z")

</div>

oui mais je doit executé la commande dans la cmd de wine

---

<div class="post-metadata">

**Author:** ![Almtesh](https://www.debian-fr.org/user_avatar/www.debian-fr.org/almtesh/32/10312_2.png) [@Almtesh](https://www.debian-fr.org/u/Almtesh)\
**Post date:** [Janvier 20, 2017, 9:47 UTC](https://www.debian-fr.org/t/probleme-python-et-wine/72364/6 "2017-01-20T09:47:28Z")

</div>

> [@Elouan](#):
>
> je doit executé

Aïe !

Sinon, tu peux tenter un truc du genre :

```python3
#!/usr/bin/env python3

from os import popen

wine_cmd = popen ('wine cmd', 'rw')
wine_cmd.write ('cd /home/elouan/Documents/Programe/ConterStrike1.6/\n')
wine_cmd.write ('start CS1.6.bat\n')

```

Si tu n’as pas Python 3, je pense que ce script est compatible Python 2.

---

<div class="post-metadata">

**Author:** ![Elouan](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/e/ba8739/32.png) [@Elouan](https://www.debian-fr.org/u/Elouan)\
**Post date:** [Janvier 28, 2017, 12:54 UTC](https://www.debian-fr.org/t/probleme-python-et-wine/72364/7 "2017-01-28T12:54:19Z")

</div>

merci pour ton aide 😉  
il m’a affiché le message d’erreur suivant

```nohighlight
Traceback (most recent call last):
  File "./ScriptWinGames.py", line 33, in <module>
    wine_cmd = popen ('wine cmd', 'rw')
  File "/usr/lib/python3.4/os.py", line 935, in popen
    raise ValueError("invalid mode %r" % mode)
ValueError: invalid mode 'rw'

```

j’ai alors changé l’argument ‘rw’ par ‘w’ mais il ne m’exécute que

```auto
wine_cmd.write ('cd /home/elouan/Documents/Programe/ConterStrike1.6/\n')

```

et non

```auto
wine_cmd.write ('start CS1.6.bat\n')

```

---

<div class="post-metadata">

**Author:** ![Almtesh](https://www.debian-fr.org/user_avatar/www.debian-fr.org/almtesh/32/10312_2.png) [@Almtesh](https://www.debian-fr.org/u/Almtesh)\
**Post date:** [Janvier 31, 2017, 3:11 UTC](https://www.debian-fr.org/t/probleme-python-et-wine/72364/8 "2017-01-31T15:11:49Z")

</div>

Ah, oui, il faut trouver un moyen pour que le script python attendre la fermeture de `wine cmd` avant de se fermer. Je ne sais pas trop comment faire là…

---

<div class="post-metadata">

**Author:** ![seb-ksl](https://www.debian-fr.org/user_avatar/www.debian-fr.org/seb-ksl/32/2946_2.png) [@seb-ksl](https://www.debian-fr.org/u/seb-ksl)\
**Post date:** [Janvier 31, 2017, 8:56 UTC](https://www.debian-fr.org/t/probleme-python-et-wine/72364/9 "2017-01-31T20:56:27Z")

</div>

C’est pas très propre, mais avec un petit `sleep` peut-être ?

(Aucun jeu de mots n’a été blessé pendant l’écriture de ce message)

---

<div class="post-metadata">

**Author:** ![Almtesh](https://www.debian-fr.org/user_avatar/www.debian-fr.org/almtesh/32/10312_2.png) [@Almtesh](https://www.debian-fr.org/u/Almtesh)\
**Post date:** [Février 3, 2017, 8:24 UTC](https://www.debian-fr.org/t/probleme-python-et-wine/72364/10 "2017-02-03T08:24:03Z")

</div>

> [@seb-ksl](#):
>
> C’est pas très propre, mais avec un petit `sleep` peut-être ?

En effet, ton `sleep` n’est pas propre, mais ce n’est pas la question. La durée de l’attente doit correspondre à la durée de l’exécution de `wine cmd`. Après, tu peux faire un `sleep` d’une durée arbitraire de plusieurs mois (je ne te raconte pas l’odeur après) et l’interrompre dans le terminal quand tu as fini, mais le cahier des charges d’@Elouan ne précise pas si la commande sera lancée dans un terminal ou à l’aide d’un lanceur et si son pc est rédémarré de temps en temps.

---

<div class="post-metadata">

**Author:** ![Almtesh](https://www.debian-fr.org/user_avatar/www.debian-fr.org/almtesh/32/10312_2.png) [@Almtesh](https://www.debian-fr.org/u/Almtesh)\
**Post date:** [Février 4, 2017, 11:16 UTC](https://www.debian-fr.org/t/probleme-python-et-wine/72364/11 "2017-02-04T23:16:02Z")

</div>

Je pense qu’en ajoutant un truc du genre :

```auto
for i in wine_cmd.readline ():
	print (i)
wine_cmd.close ()

```

à la fin du script, ça peut le faire.
