Ich habe das folgende Python-Skript in einem Verzeichnis namens 'test' auf meinem Linux-Desktop:
#!/usr/bin/python
f = open('test.txt','w')
f.write('testing the script')
Es ist also /Home/Desktop/test/script.py
Wenn ich in das Verzeichnis gehe und ./script.py
eingebe, funktioniert es einwandfrei und erstellt die Datei test.txt.
Aus irgendeinem Grund kann ich das Skript jedoch nicht vom Desktop aus ausführen (/Home/Desktop
). Ich habe zum Beispiel ./test/script.py
ausprobiert, aber nicht funktioniert.
Die Dateiberechtigungen für das Skript sind 755
und für das Verzeichnis 777
.
Jede Hilfe wäre dankbar.
5 Antworten
Sie können os.path.dirname()
und __file__
verwenden, um absolute Pfade wie folgt zu erhalten:
#!/usr/bin/python
import os # We need this module
# Get path of the current dir, then use it to create paths:
CURRENT_DIR = os.path.dirname(__file__)
file_path = os.path.join(CURRENT_DIR, 'test.txt')
# Then work using the absolute paths:
f = open(file_path,'w')
f.write('testing the script')
Auf diese Weise funktioniert das Skript für Dateien, die sich nur im selben Verzeichnis wie das Skript befinden, unabhängig davon, von wo aus Sie es ausführen.
In welchem Verzeichnis führen Sie aus? Sie könnten versuchen, Folgendes zu verwenden:
import os
print os.getcwd()
Um zu überprüfen, ob das Arbeitsverzeichnis Ihren Vorstellungen entspricht.
Geben Sie in Ihr open('test.txt', 'w')
open(r'./test.txt', 'w')
ein. Verwenden Sie beim Ausführen "python script.py
. Überprüfen Sie, ob dies funktioniert.
Wenn Ihr cwd /Desktop/test
ist und Sie dann versuchen, ./test/script.py
auszuführen, versuchen Sie, ein Skript unter /Desktop/test/test/script.py
auszuführen. Wahrscheinlicher war, dass Sie nur ./script.py
machen wollten.
Abgesehen davon wäre Ihre Frage nützlicher gewesen, wenn Sie die Fehlermeldung über die Befehlszeile angegeben hätten, anstatt nur "nicht funktioniert" zu sagen.
Wenn das Skript ausgeführt wird und nichts an die Konsole zurückgegeben wird, funktioniert es höchstwahrscheinlich. Beachten Sie, dass das Öffnen einer Datei im 'w'-Modus die Datei abschneidet. Vielleicht möchten Sie ein + verwenden?
"Und so weiter" bedeutet nicht viel.
Wo im Dateisystem bist du? Wie ist die relative Position der Testverzeichnisse zu Ihrem Standort?
Haben Sie einen voll qualifizierten Weg ausprobiert? Z.B.,
/home/daniel/test/script.py
Verwandte Fragen
Neue Fragen
python
Python ist eine dynamisch typisierte Mehrzweck-Programmiersprache mit mehreren Paradigmen. Es wurde entwickelt, um schnell zu lernen, zu verstehen, zu verwenden und eine saubere und einheitliche Syntax durchzusetzen. Bitte beachten Sie, dass Python 2 ab dem 01.01.2020 offiziell nicht mehr unterstützt wird. Fügen Sie für versionenspezifische Python-Fragen das Tag [python-2.7] oder [python-3.x] hinzu. Wenn Sie eine Python-Variante (z. B. Jython, PyPy) oder eine Bibliothek (z. B. Pandas und NumPy) verwenden, fügen Sie diese bitte in die Tags ein.