2013-10-11 17 views
10

Jak znaleźć katalog uruchomionego skryptu Pythona z poziomu Pythona [3.3]? Próbowałem, co zasugerowano na: How can I find script's directory with Python?, ale dostaję "Niepoprawna składnia" i skierowane do "os" (I zrobiłem import os).Jak znaleźć katalog skryptu uruchamiającego Python z poziomu skryptu?

Najbliższa odpowiedź brzmi: sys.argv [0], ale nadal zawiera nazwę pliku, więc nie mogę jej użyć. Czy jest jakiś inny sposób?

UWAGA: Jestem całkiem nowy w Pythonie.

Oto kod zrobiłem do tej pory (część gdzie jest napisane rundir = sys.argv [0] gdzie sugerowana kod pójdzie):

import pygame 
from pygame.locals import * 
import os, sys 
import time 
pygame.init() 

import statuscheck 
print("Completed program status check.") 

import mods.modlist 
print("Loaded all mods..") 

print("Completed loading") 

sys.dont_write_bytecode = True 

rundir = sys.argv[0] 

print("Running from" + rundir) 
+0

Możesz opublikować dokładny kod i dokładny opis błędu można dostać? Odpowiedź, którą połączyłeś, brzmi, jakby ta metoda działała dla Ciebie. –

Odpowiedz

-8

Twoja snytax musi być wyłączona. os.getcwd powinno działać, jeśli używasz go po prawej:

import os 
cwd = os.getcwd() 

Działa na systemach Unix i Windows.

Upewnij się, że składnia jest poprawna i korzystasz z niej jak powyżej.

+7

Zauważ, że to dostaje bieżący katalog roboczy, który może ale nie musi być katalogiem zawierającym skrypt. Jeśli rzeczywiście chcesz, aby katalog zawierał plik skryptu, będzie to raczej delikatne. Wyobraź sobie, że znajdujesz się w jakimś innym katalogu i uruchom skrypt, używając jego bezwzględnej ścieżki. getcwd nie zwróciłoby ścieżki skryptu. –

1

Spróbuj tego:

import os 
os.path.dirname(__file__) 

__file__ pobiera nazwę pliku, w którym jesteś. funkcja dirname dostaje katalog, plik znajduje się w.

błąd składni prawdopodobnie miał do czynienia z wyciąg z konta bankowego drukowania t. W python 3.x

print "hi" 

jest nieprawidłowy. Drukuj jest teraz funkcją.

print("hi") 

działa. Potrzebujesz nawiasów.

39

Aby uzyskać katalogu, który zawiera moduł używasz:

import os 
path = os.path.dirname(os.path.realpath(__file__)) 

Albo jeśli chcesz katalog, z którego skrypt został wywołany:

import os 
path = os.getcwd() 

Z docs:

__file__ to ścieżka dostępu do pliku, z którego moduł został załadowany, jeśli był dedowane z pliku.

zależności od sposobu skrypt nazywa, może to być ścieżka względna od os.getcwd(), więc os.path.realpath(__file__) skonwertuje to do ścieżki bezwzględnej (czy nic nie jest __file__ jest już ścieżka bezwzględna). os.path.dirname() zwróci pełny katalog, usuwając nazwę pliku.

+0

Możesz dostać obiekt 'Path' przez' Path (__ plik __). Resolve(). Parent'. – Tyler

1

To powinno działać:

import os,sys 
print(os.path.dirname(os.path.realpath(sys.argv[0]))) 
Powiązane problemy