logo

Obteniu el directori actual a Python

En aquest article, tractarem Com obtenir i canviar el directori de treball a Python. Mentre es treballa amb maneig de fitxers potser haureu notat que els fitxers només es fan referència als seus noms, p. 'GFG.txt' i si el fitxer no es troba al directori de l'script, Python genera un error. El concepte de Directori de treball actual (CWD) esdevé important aquí. Considereu el CWD com a carpeta, el Python està operant dins. Sempre que els fitxers només s'anomenen pel seu nom, Python assumeix que comença al CWD, la qual cosa significa que una referència només de nom només tindrà èxit si el fitxer es troba al CWD de Python.

Nota: La carpeta on s'executa l'script de Python es coneix com a Directori actual. Pot ser que aquest no sigui el camí on es troba l'script de Python.



Què és el mòdul Python OS?

Python proporciona un mòdul d'OS per interactuar amb el sistema operatiu. Aquest mòdul es troba sota el mòdul d'utilitat estàndard de Python. Totes les funcions del mòdul os augmenten OSError en el cas de noms i camins de fitxer no vàlids o inaccessibles, o altres arguments que tinguin el tipus correcte però que no siguin acceptats pel sistema operatiu.

Python Troba el directori actual

Obteniu un directori de l'script de Python actual mitjançant sys.argv[0]

En aquest exemple, hem utilitzat sys.argv[0] per recuperar la ruta del fitxer d'script i os.path.dirname() extreu el directori actual del camí.

Python 3








import> os> import> sys> script_directory>=> os.path.dirname(os.path.abspath(sys.argv[>0>]))> print>(script_directory)>

>

>

Sortida:

Obteniu el directori de l'script Python actual

Obteniu un directori de l'script de Python actual

Obteniu el directori de l'script de Python actual mitjançant el mòdul d'inspecció

En aquest exemple, hem utilitzat inspect.getfile(inspect.currentframe()) que retorna la ruta del fitxer de script actual, i os.path.dirname() extreu el directori actual del camí.

Python 3




import> inspect> import> os> script_directory>=> os.path.dirname(os.path.abspath(> >inspect.getfile(inspect.currentframe())))> > print>(script_directory)>

>

>

Sortida:

actor de carnero
Obteniu el directori de l'script Python actual

Obteniu el directori de l'script Python actual

Obteniu el directori de treball actual mitjançant os.getcwd()

En aquest exemple, hem utilitzat os.getcwd() per obtenir el directori actual de l'script Python.

Python 3




import> os> > print>(>'File location using os.getcwd():'>, os.getcwd())>

>

>

Sortida:

File location using os.getcwd(): /home/tuhingfg/Documents/Scripts>

Nota: Utilitzant os.getcwd() no funciona com s'esperava quan s'executa el codi de Python des d'un directori diferent de l'script de Python.

Resultat inesperat quan s'executa l'script Python des d'un directori diferent de l'script mitjançant os.getcwd()

L'script de Python es col·loca dins /home/tuhingfg/Documents/Scripts . Quan executem l'script des de dins de la mateixa carpeta, proporciona la ubicació correcta de l'script. Però quan canviem el nostre directori a un altre lloc, mostra la ubicació d'aquest directori. Això és perquè os.getcwd() considera el directori des d'on estem executant l'script. En base a això, el resultat de os.getcwd() també varia.

Python 3




import> os> > print>(>'File location using os.getcwd():'>, os.getcwd())>

conté python

>

>

Sortida:

Obteniu la ubicació de l'script mitjançant os.getcwd()

Obteniu la ubicació de l'script mitjançant os.getcwd()

Obteniu la ubicació de l'script de Python mitjançant el mètode os.path.realpath().

os.path.realpath() es pot utilitzar per obtenir el camí de l'script de Python actual. De fet, el mètode os.path.realpath() a Python s'utilitza per obtenir la ruta canònica del nom de fitxer especificat eliminant qualsevol enllaç simbòlic que es trobi a la ruta. Una variable especial __dossier__ es passa a la camí real() mètode per obtenir el camí de l'script de Python.

En aquest exemple, el os.getcwd() i __dossier__ donar dos resultats diferents. Com que estem executant l'script des d'una carpeta diferent de l'script, os.getcwd() la sortida ha canviat segons la carpeta d'execució de l'script. Però __dossier__ genera el resultat constant independentment del directori de treball actual.

Python 3




import> os> > print>(>'File location using os.getcwd():'>,> >os.getcwd())> > print>(f>'File location using __file__ variable:'>+> >'{os.path.realpath(os.path.dirname(__file__))}'>)>

>

>

Sortida:

Obteniu el directori de Python

Obteniu un directori amb Python

Nota: __fitxer__ és la ruta del fitxer des del qual s'ha carregat el mòdul si s'ha carregat des d'un fitxer.