Python, wie funktioniert subprocess?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hier findest du alle Informationen schön aufgelistet.

Du kannst entweder die Standardlibrary subprocess benutzen oder os.system().

https://stackoverflow.com/questions/89228/calling-an-external-command-in-python

Woher ich das weiß:
Berufserfahrung
25

Achso, Zusatz: Nur falls dir das nicht klar sein sollte, weil du python nur aus PyCharm ausführst:

In einer Konsole kannst du das Programm starten mit "python CheckContent.py". Voraussetzung dafür ist, dass du python in deiner PATH-Systemvariable drin hast.

0
6
@ChePhyMa

Mein Problem ist dass die Python die zusätzlich ausgerufen werden soll ebenfalls noch andere aufruft. Ich versuche es mal so zu erklären, wie es in cmd aussähe:

start "" "C:\Pfad\Frage.cmd"

Die neue Datei soll einfach nur ausgeführt werden, kein Output usw. soll übertragen werden. Bin neu in Python und die ganzen Code Schnipsel für einen einfachen Befehl irritieren mich.

0
25
@LordWithLord
import subprocess
subprocess.Popen("python CheckContent.py", shell=True)

Ich verstehe nicht, was genau das Problem ist und was du mir mit deiner Nachricht sagen wolltest, tut mir leid. Probier mal die Syntax oben.

"shell=True" ist nicht in allen Betriebssystemen notwendig, aber schreib mal lieber hin. Dann muss natürlich CheckContent.py im gleichen Ordner liegen oder du musst den gesamten Pfad eingeben.

Außerdem muss python in deinem PATH sein. Probier das aus indem du versuchst in der Kommandozeile mit dem Befehl "python CheckContent.py" das manuell auszuführen. Falls das nicht geht und er "python" nicht kennt, musst du python zu deiner PATH Variable hinzufügen. Wie das geht, kannst du ergoogeln.

0

So:
import subprocess

subprocess.call(„python3 /pfad/zu/CheckContent.py“, shell=True)

Das in „“ ist der Befehl der ausgeführt wird. Wenn die Datei CheckContent.py im selben Verzeichnis liegt, kannst du den Pfad natürlich weg lassen.

6
Der Befehl "python3" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
0

Python Discord Bot: Traceback (most recent call last)?

Hi!

Ich bin gerade dabei, einen Discord-Bot zu erstellen. Folgende Fehlermeldung bekomme ich beim Starten:

Traceback (most recent call last):
  File "C:/Users/User/PycharmProjects/pyexBot/main.py", line 2, in <module>
    import discord
  File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord__init__.py", line 20, in <module>
    from .client import Client, AppInfo, ChannelPermissions
  File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\client.py", line 38, in <module>
    from .state import ConnectionState
  File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\state.py", line 36, in <module>
    from . import utils, compat
  File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\discord\compat.py", line 32
    create_task = asyncio.async
                              ^
SyntaxError: invalid syntax

Zeilen der Fehler:

main.py:
1: import asyncio as asyncio 2: import discord 3: from discord import Client

init.py:
20: from .client import Client, AppInfo, ChannelPermissions

compat.py:
29: try:
30:     create_task = asyncio.ensure_future
31: except AttributeError:
32:     create_task = asyncio.async
33:
34: try:
35:     run_coroutine_threadsafe = asyncio.run_coroutine_threadsafe
36: except AttributeError:

state.py
36: from . import utils, compat

client.py
38: from .state import ConnectionState

Kann mir da jemand helfen? Ich bin neu in Python, deshalb weiß ich nicht, wie ich mit diesen Fehlermeldungen umgehen soll. Gerade weil nicht ich, sondern der Ersteller von discord.py den Code geschrieben hat, kann ich nichts damit anfangen.

Danke für jede hilfreiche Antwort!

...zur Frage

Python subprocess, Bash Befehl in Python?

import subprocess bashCommand = "sudo systemctl status hello.service" bashCommand2 = "sudo systemctl start hello.service" output = subprocess.check_output(['bash','-c', bashCommand]) while output == "exited": subprocess.call([bashCommand2])

File "test.py", line 6 subprocess.call([bashCommand2]) ^ IndentationError: expected an indented block

Kann mir jemand bei diesem Fehler helfen? Ich versuche in der letzten Zeile einfach den Bash Befehl 2 in Python aufzurufen. Danke

...zur Frage

kann python nicht öffnen.(programmiersprache).?

Hallo. Ich habe ein video geguckt wie man so mit python so sachen macht. und wollte als erstes ein python code machen. habe dazu eine textdatei gemacht und anstatt .txt am Ende habe ich .py am ende gemacht ich. als ich es öffnen wollte ging nich. ich sah nur das ganz kurz CMD erschien oder irgendwas anderes aber dann verschwand es wieder habe es dann wie im video selbst CMD geöffnet und dann den weg zu python geschrieben hier ist er ** "cd C:/Benutzer/ilja/AppData/Local/Programs/Python/Python36-32"** und habe auf enter gedrückt und es ging immer noch net :(.auch wenn ich bei CMD anstatt cd python schreibe gehts auch net und am ende noch test.py schreibe gehts auch nicht

...zur Frage

Python aus CMD starten über Kurzbefehl

Hallo,

ich möchte gerne Python aus dem cmd Fenster unter Win 7 starten und zwar folgendermaßen:

Ich weiß, dass man irgendwie hinterlegen kann, dass der Befehl "C:\Python27\python.exe" hinter dem Kürzel "python" steckt... Dann könnte ich im cmd in jedem beliebigen Ordner den Befehl "python test.py" benutzen, um die Datei test.py mit Python auszuführen.

Wie funktioniert das genau??

Und gibt es auch eine Möglichkeit (ähnlich wie unter Linux) in der ersten Zeile des *.py-Files einen Befehl zu haben,dass die Datei automatisch als eine Python-Datei interpretiert wird?

Danke schon mal!

...zur Frage

Frage zu cron (Linux)?

Werden die Befehle in der crontab der Reihenfolge nach von oben nach unten aufgeführt wenn sie alle jede Stunde laufen sollen? Wenn jede Stunde ein Python Skript gestartet werden soll (das Skript crasht zwischendurch Mal), läuft das Skript dann mehrmals falls es Mal nicht innerhalb einer Stunde crasht? Wenn ja könnte ich dann in der crontab das Skript in einem Befehl erst killen und danach neu starten, würde diese Befehle dann sofort nacheinander ausgeführt werden?

...zur Frage

Was möchtest Du wissen?