Ö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 
  • Das exportierte PNG-Bild sieht mit Rüstung aus, wenn es von CGWindowListCreateImage / PNGCanvas erzeugt wird
  • Pygame brach zusammen?
  • Mac OS X pygame input geht an Terminal statt Python
  • Wo ist Qt Designer App auf Mac + Anaconda?
  • Python fragt nach älteren Pfaden auf Mac nach dem Löschen der doppelten Python-Installation
  • Installieren von pygraphviz auf OS X 10.7.5
  • PyCrypto und GMP-Bibliothek nicht gefunden Fehler [Mac OS 10.6.3]
  • Python Batch Umbenennen von Dateien in Mac
  • Aktualisieren Sie eine Artiste (Line2D) auf eine Figur, ohne die ganze Figur neu zu zeichnen - axes.draw_artist () stürzt ab
  • Wo ist der Ordner für die Installation von Tensorflow mit Pip, Mac OSX?
  • Was ist der sicherste Weg, um Python-Framework-Dateien zu entfernen, die sich an einem anderen Ort befinden als Brw-Installationen
  • Python ist die beste Programmiersprache der Welt.