2016-10-08 1 views
0

(Linux) in Bash Ich kann VariableName = CD $ BASEDIR./Desktop zu ersetzen, HOME/Benutzername/Destop. Wie kann ich dasselbe in Python erreichen?wie verallgemeinern/erhalten Basisverzeichnis für Linux Pfad für Python-Skript

BEISPIEL: muss Heimat/Name ersetzen, um generisch zu sein, damit ich dieses von mehreren Wirten ausführen kann. f = öffnen ("home/name/directory/unterverzeichnis/file.cfg", "r")

+0

Das 'variableName =' hat keinen Effekt in bash und ändert nichts an 'HOME/userName/Destop'. Bitte geben Sie an, was Sie tun möchten: Möchten Sie '$ HOME' /' ~ 'erweitern? Möchten Sie eine Variable abhängig von einer Umgebungsvariablen setzen? Möchten Sie das aktuelle Verzeichnis ändern? – MisterMiyagi

+0

Ich öffne und lese in Dateien wie folgt ein: f = open ("home/name/directory/unterverzeichnis/file.cfg", "r") versuche den/home/name-teil des pfades loszuwerden, damit mein Skript kann auf mehreren Linux-Rechnern ausgeführt werden! Wie würde ich Ihre commands.getoutput ("cd $ BASEDIR./Desktop") zu diesem Beispiel hinzufügen! – Norstorin

Antwort

0

Versuchen Sie, Befehle libray zu verwenden.

import commands 

commands.getoutput("cd $BASEDIR./Desktop") 
+0

Dies wäre eine bessere Antwort, wenn Sie angegeben haben, dass es in 'python3' entfernt wurde. – danidee

+0

Eigentlich haben Sie nicht erwähnt, dass Sie an python3.x arbeiten. – Harv

+0

Dank Harv für die Antwort, ich bin neu im Skripting im Allgemeinen so entschuldigen Sie die Newb Fragen. So öffne und lese ich Dateien wie folgt: f = öffnen ("home/name/directory/Unterverzeichnis/file.cfg", "r") versuchen, den/home/Namen Teil des Pfades loszuwerden damit mein Skript auf mehreren Linux-Rechnern laufen kann! Wie würde ich Ihre commands.getoutput ("cd $ BASEDIR./Desktop") zu diesem Beispiel hinzufügen! Vielen Dank! – Norstorin

1

Sie könnten einige Verwendung von os.path.expanduser oder os.path.expandvars erhalten:

>>> import os 
>>> os.path.expanduser('~/Desktop') 
'/home/userName/Desktop' 

oder unter der Annahme, dass $BASEDIR in Ihrer Umgebung definiert ist,

>>> import os 
>>> os.path.expandvars('$BASEDIR/Desktop') 
'/home/userName/Desktop' 

die erste Option verwenden, vielleicht haben Sie kann tun, was Sie wollen mit:

f = open(os.path.expanduser("~/directory/subdirectory/file.cfg"), "r") 
1

Sie Umgebungsvariablen direkt von os.environ lesen:

import os 
basedir = os.environ.get('BASEDIR') 

einen Pfad zuverlässig zu konstruieren, das os Modul bietet os.path.join. Sie sollten auch ein Fallback bereitstellen, wenn die Variable nicht definiert ist. Dies könnte wie folgt aussehen:

import os 
my_path = os.path.expanduser(os.path.join(
    os.environ.get('BASEDIR', '~'), # default to HOME 
    'Desktop' 
) 

Beachten Sie, dass Umgebungsvariablen möglicherweise nicht die ideale Lösung sind. Werfen Sie einen Blick auf Argumente, zum Beispiel über die argparse module.