Argumente von Pycharm und sys.argv

89

Ich versuche, ein Skript zu debuggen, das Befehlszeilenargumente als Eingabe verwendet. Argumente sind Textdateien im selben Verzeichnis. Das Skript ruft Dateinamen aus der Liste sys.argv ab. Mein Problem ist, dass ich das Skript nicht mit Argumenten in pycharm starten kann.

Ich habe versucht, Argumente in das Feld "Skriptparameter" im Menü "Ausführen"> "Konfiguration bearbeiten" wie folgt einzugeben:

-s'file1.txt', -s'file2.txt'

Aber es hat nicht funktioniert. Wie starte ich mein Skript mit Argumenten?

PS Ich bin auf Ubuntu

YKY
quelle

Antworten:

107

In PyCharm werden die Parameter wie in hinzugefügt, Script Parametersaber sie werden in doppelte Anführungszeichen gesetzt "" und ohne Angabe der Interpreter-Flags wie -s. Diese Flags sind in der Interpreter optionsBox angegeben.

Inhalt des Felds "Skriptparameter":

"file1.txt" "file2.txt"

Interpeter-Flags:

-s

Oder visuell:

Geben Sie hier die Bildbeschreibung ein

Dann mit einer einfachen Testdatei zu bewerten:

if __name__ == "__main__":
    import sys
    print(sys.argv)

Wir erhalten die von uns angegebenen Parameter ( sys.argv[0]natürlich mit dem Skriptnamen):

['/Path/to/current/folder/test.py', 'file1.txt', 'file2.txt']
Dimitris Fasarakis Hilliard
quelle
Danke, es hat funktioniert. Außerdem stellt sich heraus, dass ich "" Anführungszeichen anstelle von "" hätte verwenden sollen.
YKY
3
Das war hilfreich; Zur Verdeutlichung verwendet mein Python-Skript zwei Dateinamen als Parameter, einen für -r und einen für -s (oder beide oder einen oder keinen). Daher wurden meine Skriptparameter als [-p "prof_samples.txt" -r "resp_samples.txt"] ohne Interpreteroptionen angegeben.
Harry
2
Ich denke , dass diese Antwort nicht mehr aktuell ist , weil es keinescript parameters
tisaconundrum
@tisaconundrum, nachdem Sie dies überprüft haben, können Sie mir sagen, welche Version von PyCharm Sie ausführen? Ich habe gerade die neueste Version heruntergeladen (PyCharm Community Edition 2017.2.3 Build # PC-172.3968.37, erstellt am 1. September 2017) und sehe immer noch die Script parametersOption.
Dimitris Fasarakis Hilliard
Klicken Sie nach dem Hinzufügen der Parameterwerte auf die Schaltfläche ANWENDEN oder OK, um den Code nicht auszuführen. Wenn ich die Konfigurationen speichere und den Code ausführe, werden Argumente immer noch nicht im Pycharm-Python-Code berücksichtigt
Praveen L
75

Für andere, die sich fragen, wie sie zu diesem Fenster kommen sollen. Hier ist wie:

Sie können darauf zugreifen, indem Sie auf Select Run/Debug Configurations(links von Geben Sie hier die Bildbeschreibung ein) klicken und zu gehen Edit Configurations. Ein GIF sorgte für Klarheit.

Geben Sie hier die Bildbeschreibung ein

Tisaconundrum
quelle
1
Der kurze Clip war eigentlich hilfreich - danke! Das ist es, was ich an GUI-Dingen hasse. Es ist wie eine Ostereiersuche, während Sie es über die Befehlszeile einfach
eingeben
Dies war hilfreicher als das beste, das am besten bewertet wurde. Vielen Dank!
Aakash Basu
12

Auf PyCharm Community oder Professional Edition 2019.1+ :

  1. Klicken Sie in der Menüleiste auf Ausführen -> Konfigurationen bearbeiten
  2. Fügen Sie Ihre Argumente in das Textfeld Parameter ein (z. B. file2.txt file3.txtoder --myFlag myArg --anotherFlag mySecondArg).
  3. Klicken Sie auf Übernehmen
  4. Klicken Sie auf OK
Giorgos Myrianthous
quelle
11

Zusätzlich zu Jims Antwort (leider nicht genügend Wiederholungspunkte, um einen Kommentar abzugeben) wollte ich nur darauf hinweisen, dass bei den in PyCharm angegebenen Argumenten keine Sonderzeichen maskiert sind, im Gegensatz zu dem, was Sie in der Befehlszeile tun würden. Während Sie in der Befehlszeile Folgendes tun würden:

python mediadb.py  /media/paul/New\ Volume/Users/paul/Documents/spinmaster/\*.png

Der PyCharm-Parameter wäre:

"/media/paul/New Volume/Users/paul/Documents/spinmaster/*.png"
Paul Miller
quelle
5

Beachten Sie, dass es aus unbekannten Gründen nicht möglich ist, Befehlszeilenargumente in der PyCharm Edu-Version hinzuzufügen. Dies ist nur in Professional- und Community-Editionen möglich.

Jan Bodnar
quelle
3

Der erste Parameter ist der Name des Skripts, das Sie ausführen möchten. Ab dem zweiten Parameter sind dies die Parameter, die Sie über Ihre Befehlszeile übergeben möchten. Unten ist ein Testskript:

from sys import argv

script, first, second = argv
print "Script is ",script
print "first is ",first
print "second is ",second

Und so übergeben Sie die Eingabeparameter: 'Pfad zu Ihrem Skript', 'Erster Parameter', 'Zweiter Parameter'

Nehmen wir an, der Pfad zu Ihrem Skript lautet /home/my_folder/test.py. Die Ausgabe lautet wie folgt:

Script is /home/my_folder/test.py
first is First Parameter
second is Second Parameter

Ich hoffe, das hilft, da ich einige Zeit gebraucht habe, um herauszufinden, dass die Eingabeparameter durch Kommas getrennt sind.

Rumela Saraswati
quelle
2

Fügen Sie Folgendes oben in Ihre Python-Datei ein.

import sys

sys.argv = [
    __file__,
    'arg1',
    'arg2'
]

Jetzt können Sie einfach mit der rechten Maustaste auf das Python-Skript klicken.

Ahmed
quelle
1

Ich glaube, es ist sogar in der Edu-Version enthalten. Klicken Sie einfach mit der rechten Maustaste auf den durchgehend grünen Pfeil (Ausführen) und wählen Sie "Parameter hinzufügen".

Py Learner
quelle
1

Es funktioniert in der Edu-Version für mich. Ich musste in den Interpreter-Optionen keine Option -s angeben.

Pycharm-Parameter für die Ausführung mit der Befehlszeile

Awaa
quelle