Öffnen Sie (Datei) von überall

Ich arbeite an OS X Lion, ich versuche, eine Datei in meinem Python-Programm von überall im Terminal zu öffnen. Ich habe die folgende Funktion in meinem .bash_profile gesetzt:

function testprogram() {python ~/.folder/.testprogram.py} 

Auf diese Weise kann ich (im Terminal) mein Testprogramm aus einem anderen Verzeichnis als mein ~ /.

Nun, wenn ich in meinem Home-Verzeichnis bin und das Programm ausführen, würde das folgende funktionieren

 infile = open("folder2/test.txt", "r+") 

Allerdings, wenn ich in einem anderen Verzeichnis aus meinem Home-Ordner und schreiben "Testprogramm" in das Terminal, das Programm startet, aber ist nicht in der Lage, die Datei test.txt zu finden.

Gibt es eine Möglichkeit, immer python öffnen die Datei aus dem gleichen Ort nicht betroffen, wo ich das Programm aus laufen?

6 Solutions collect form web for “Öffnen Sie (Datei) von überall”

Wenn du es machen willst, würde ich es empfehlen

 import os open(os.path.join(os.path.expanduser('~'),'rest/of/path/to.file')) 

Verwenden Sie die Tilde, um den Home-Ordner zu repräsentieren, genau wie in der .bash_profile , und verwenden Sie os.path.expanduser .

 import os infile = open(os.path.expanduser("~/folder2/test.txt"), "r+") 

Dies ist nicht anders als die Bezugnahme auf eine Datei über alles andere als Python, müssen Sie einen absoluten Pfad verwenden, anstatt ein relativer.

Wenn Sie sich auf Dateien beziehen __file__ die sich auf den Speicherort des Skripts beziehen, können Sie auch das Attribut __file__ in Ihrem Modul verwenden, um den Speicherort des aktuell laufenden Moduls zu erhalten.

Auch, anstatt mit einer Shell-Funktion, geben Sie einfach Ihr Skript eine Shebang-Linie ( #!/usr/bin/env python ), chmod +x es, und legte es irgendwo auf Ihrem PATH .

Sie können einfach die Funktion in einer Subshell, so können Sie cd Hause vor dem Ausführen:

 function testprogram() { ( cd && python .folder/.testprogram.py ) } 

In python sys.argv[0] wird auf den Pfad des Skripts gesetzt (falls bekannt). Sie können diese plus die Funktionen in os.path um auf Dateien zuzugreifen, die sich auf das Verzeichnis os.path , das das Skript enthält. Beispielsweise

 import sys, os.path script_path = sys.argv[0] script_dir = os.path.dirname(script_path) def script_relative(filename): return os.path.join(script_dir, filename) infile = open(script_relative("folder2/test.txt"), "r+") 

David Robinson weist darauf hin, dass sys.argv[0] möglicherweise kein vollständiger Pfadname ist. Anstatt mit sys.argv[0] Sie __file__ wenn dies der Fall ist.

Verwenden Sie entweder den vollen Pfad wie

 /path/to/my/folder2/test.txt 

Oder abgekürzt

 ~/folder2/test.txt 
  • Wie kann ich Python.app auf Firewall unter Mac OS X erlauben?
  • Homebrew install libxml2 mit Pythonmodulen
  • Include openssl in app
  • Zeitplan-Code, um irgendwann später auszuführen
  • Python- und OpenSSL-Versionsreferenz auf OS X
  • Kann ich neue Daten aus einer geöffneten Datei lesen, ohne sie wieder zu öffnen?
  • Pytz auf Mac installieren
  • Python install lxml auf mac os 10.10.1
  • Python ist die beste Programmiersprache der Welt.