2016-07-22 13 views
0

Ich bin ziemlich neu in Python, also bitte bitte mit mir.So setzen/definieren/verwenden sys.argv

Momentan verwende ich Python 3.5 in einer Anaconda-Umgebung auf Pycharm, und ich versuche zu verstehen, wie man sys.argv setzt/definiert/verwendet, so dass ich mehrere Prozesse automatisieren kann, bevor ich meine Änderungen auf github hochlade.

Zum Beispiel:

python function/function.py input_folder/input.txt output_folder/output.txt 

Das bedeutet, dass function.pyinput.txt von input_folder nehmen, gilt, was Skript in function.py geschrieben, und die Ergebnisse in output.txt im Ordner output_folder.

Allerdings, wenn ich dies in Terminal eingeben, ich die folgende Fehlermeldung erhalten:

python: can't open file 'function/function.py': [Errno 2] No such file or directory 

Dann sys.argv in Python Konsole eingeben, erhalte ich folgendes:

['C:\\Program Files (x86)\\JetBrains\\PyCharm 2016.2\\helpers\\pydev\\pydevconsole.py', 
'53465', 
'53466'] 

Meine Vermutung ist, dass wenn ich sys.argv[0:1] richtig einstellen sollte, dann sollte ich function.py auf input.txt anwenden und die Ergebnisse in output.txt speichern können.

Ich habe bereits versucht, diese Verzeichnisse zu definieren, aber sie würden nicht funktionieren. Jede Hilfe wäre großartig!

Antwort

1

Ihr Problem ist, dass Python nicht weiß, wo das Funktionsverzeichnis existiert. Wenn Sie versuchen, wie so

function 
|_function.py 
| 
input_folder 
|_input.txt 
| 
|output_folder 
|_output.txt 

ein Skript aus einem Unterverzeichnis ausführen müssen Sie Python sagen, dass die Funktion Ordner lokal ist, so

python ./function/function.py ./input_folder/input.txt ./output_folder/output.txt 

oder

python $PWD/function/function.py $PWD/input_folder/input.txt $PWD/output_folder/output.txt 

$ PWD ist eine Bash-Variable, die das aktuelle Verzeichnis gibt

+0

Ich habe beide versucht und bekam 'Python: Datei kann nicht geöffnet werden. './src/venmo__clean.py': [Errno 2] Kein Erfolg h Datei oder Verzeichnis ' –