2013-10-11 17 views
10

Come trovo la directory dello script Python in esecuzione da Python [3.3]? Ho provato quello che è stato suggerito a: How can I find script's directory with Python?, ma ottengo "Sintassi non valida" e diretto a "os" (E ho importato os).Come trovo la directory dello script in esecuzione Python all'interno dello script?

Il più vicino possibile alla risposta è: sys.argv [0], ma che include ancora il nome del file, quindi non posso usarlo. C'è un altro modo?

NOTA: Sono abbastanza nuovo per Python.

Ecco il codice che ho fatto finora (la parte in cui si dice rundir = sys.argv [0] è dove il codice suggerito andrà):

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

potete inserire il codice esatto e l'errore esatto che si ottiene? La risposta che hai collegato sembra che dovrebbe funzionare per te. –

risposta

-8

Il tuo snytax deve essere spento. os.getcwd dovrebbe funzionare se lo si utilizza a destra:

import os 
cwd = os.getcwd() 

Funziona su Unix e Windows.

Assicurarsi che la sintassi sia corretta e che venga utilizzata come sopra.

+7

Si noti che questo ottiene la directory di lavoro corrente, che può o meno essere la directory che contiene lo script. Se quello che vuoi veramente è la directory che contiene il file di script, allora sarà piuttosto fragile. Immagina di essere in qualche altra directory e di eseguire lo script usando il suo percorso assoluto. getcwd non restituirebbe il percorso dello script. –

1

Prova questo:

import os 
os.path.dirname(__file__) 

__file__ prende il nome del file che si è in. la funzione dirname ottiene la directory che il file è in.

l'errore di sintassi probabilmente aveva a che fare con gli statisti di stampa t. In python 3.x

print "hi" 

non valido. La stampa è ora una funzione.

print("hi") 

opere. Hai bisogno delle parentesi.

39

Per ottenere la directory che contiene il modulo in esecuzione:

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

Oppure, se si desidera che la directory da cui è stato invocato lo script:

import os 
path = os.getcwd() 

Dal docs:

__file__ è il percorso del file da cui è stato caricato il modulo, se era loa ded da un file.

A seconda di come lo script si chiama, questo può essere un percorso relativo da os.getcwd(), così os.path.realpath(__file__) sarà convertire questo ad un percorso assoluto (o non fare nulla è la __file__ è già un percorso assoluto). os.path.dirname() restituirà quindi l'intera directory rimuovendo il nome file.

+0

È possibile ottenere un oggetto 'Path' tramite' Percorso (__ file __). Resolve(). Parent'. – Tyler

1

Questo dovrebbe funzionare:

import os,sys 
print(os.path.dirname(os.path.realpath(sys.argv[0]))) 
Problemi correlati