2016-08-04 7 views
0

Ist das in Python möglich? Ich arbeite an Linux, also frage ich mich, ob es eine Möglichkeit gibt, Bash-Befehle beim Aufruf des Skripts zu kombinieren (so etwas wie pwd).Wie übergibt man das aktuelle Verzeichnis als Argument an ein Skript?

+1

Warum würden Sie? Sie können darauf im Skript selbst zugreifen. 'importieren os; os.getcwd() ' – DeepSpace

+0

Natürlich können Sie die Ausgabe von bash-Befehlen an ein Skript übergeben, das von' sys.stdin' gelesen werden kann. Versuchen Sie dies in Ihrer Shell: 'pwd | python -c "import sys; print (sys.stdin.read() + 'Hallo, bash')" 'Oder sogar' pwd | python -c "print (input())" Aber du solltest "os" und "subprocess" beibehalten, es sei denn, du möchtest dein Skript so gestalten, dass du es per Pipe oder Redirect weiterleiten kannst. –

Antwort

4

Um das aktuelle Arbeitsverzeichnis zu erhalten, können Sie verwenden:

import os 
os.getcwd() 

Wenn Sie bash Befehle ausführen möchten, stellt fest, dass @DeepSpace subprocess-os.system bevorzugt wird, Syntax wie folgt:

import subprocess 
subprocess.call("pwd") 

os.system ist immer noch funktionsfähig, können Sie etwas tun:

import os 
os.system("pwd") 
+2

"os.system" ist veraltet. Es wird empfohlen, das 'subprocess' Modul zu verwenden. – DeepSpace

+0

@DeepSpace Guter Punkt, Antwort bearbeitet –

3

Ja. Sie können os.curdir, kombiniert mit os.path.abspath

>>> import os 
>>> os.path.abspath(os.path.curdir) 
'/home/msvalkon' 
+0

Der Aufruf von 'os.getcwd()' ist einfacher. – DeepSpace

+0

Sicher, aber es liefert möglicherweise nicht immer den korrekten Wert. Ich glaube, os.getcwd() 'wird $ PWD Ihrer Umgebung verwenden, die korrekt sein kann oder auch nicht. Normalerweise ist das natürlich. – msvalkon