wake-up-neo.com

Argumente von Pycharm und sys.argv

Ich versuche, ein Skript zu debuggen, das Befehlszeilenargumente als Eingabe verwendet. Argumente sind Textdateien im selben Verzeichnis. Das Skript erhält Dateinamen aus der sys.argv-Liste. 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" einzugeben.

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

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

P.S. Ich bin auf Ubuntu

59
YKY

In PyCharm werden die Parameter wie Sie in Script Parameters hinzugefügt, aber sie werden in doppelte Anführungszeichen"" eingeschlossen und ohne die Interpreter-Flags wie -s anzugeben. Diese Flags werden im Feld Interpreter options angegeben.

Inhalt der Skriptparameter-Box: 

"file1.txt" "file2.txt"

Interpeter-Flags:

-s

Oder visuell:

 enter image description here

Dann mit einer einfachen Testdatei zum Auswerten:

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

Wir erhalten die von uns angegebenen Parameter (wobei sys.argv[0] natürlich den Skriptnamen enthält):

['/Path/to/current/folder/test.py', 'file1.txt', 'file2.txt']

Für andere, die sich fragen, wie man zu diesem Fenster kommt. Hier ist wie:

Sie können darauf zugreifen, indem Sie auf Select Run/Debug Configurations klicken (links von  enter image description here ) und gehe zum Edit Configurations. Ein Gif sorgt für Klarheit.

 enter image description here

50
tisaconundrum

Neben Jims Antwort (leider nicht genug Wiederholungspunkte, um einen Kommentar abzugeben), möchte ich nur darauf hinweisen, dass die in PyCharm angegebenen Argumente nicht Sonderzeichen enthalten, im Gegensatz zu dem, was Sie in der Befehlszeile ausführen würden. In der Befehlszeile würden Sie Folgendes tun: 

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"
9
Paul Miller

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

4
Jan Bodnar

Der erste Parameter ist der Name des Skripts, das Sie ausführen möchten. Ab dem zweiten Parameter sind es die Parameter, die Sie von Ihrer Befehlszeile aus ü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 sieht folgendermaßen aus:

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

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

2

Fügen Sie Folgendes 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.

1
Ahmed

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

0
Py Learner

Auf PyCharm CE 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.txt oder --myFlag myArg --anotherFlag mySecondArg).
  3. Klicken Sie auf Übernehmen
  4. OK klicken
0

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

 Pycharm parameters for running with command line

0
Awaa