I denne artikel vil vi dække, hvordan man får og ændrer arbejdskataloget i Python. Mens du arbejder med filhåndtering du har måske bemærket, at filer kun refereres ved deres navne, f.eks. 'GFG.txt', og hvis filen ikke er placeret i scriptets bibliotek, rejser Python en fejl. Konceptet med Current Working Directory (CWD) bliver vigtigt her. Betragt CWD som mappen, hvor Python fungerer indeni. Når filerne kun kaldes ved deres navn, antager Python, at den starter i CWD, hvilket betyder, at en reference kun for navn vil lykkes, hvis filen er i Pythons CWD.
Bemærk: Mappen, hvor Python-scriptet kører, er kendt som Current Directory. Dette er muligvis ikke stien, hvor Python-scriptet er placeret.
Hvad er Python os-modulet?
Python giver et os modul for at interagere med operativsystemet. Dette modul kommer under Pythons standard hjælpemodul. Alle funktioner i os-modulet hæves OSError i tilfælde af ugyldige eller utilgængelige filnavne og stier eller andre argumenter, der har den korrekte type, men som ikke accepteres af operativsystemet.
Python Find den aktuelle mappe
Få en mappe med det aktuelle Python-script ved hjælp af sys.argv[0]
I dette eksempel har vi brugt sys.argv[0] for at hente stien til scriptfilen og os.path.dirname() udtrækker den aktuelle mappe fra stien.
Python3
import> os> import> sys> script_directory>=> os.path.dirname(os.path.abspath(sys.argv[>0>]))> print>(script_directory)> |
>
>
Output:

Få en mappe med det aktuelle Python-script
Få kataloget over det aktuelle Python-script ved hjælp af Inspect Module
I dette eksempel har vi brugt inspect.getfile(inspect.currentframe()) som returnerer stien til den aktuelle scriptfil, og os.path.dirname() udtrækker den aktuelle mappe fra stien.
Python3
import> inspect> import> os> script_directory>=> os.path.dirname(os.path.abspath(> >inspect.getfile(inspect.currentframe())))> > print>(script_directory)> |
>
>
Output:
boble sortering i java

Hent mappe med det aktuelle Python-script
Hent den aktuelle arbejdsmappe ved hjælp af os.getcwd()
I dette eksempel har vi brugt os.getcwd() for at få den aktuelle mappe med Python-script.
Python3
import> os> > print>(>'File location using os.getcwd():'>, os.getcwd())> |
>
>
Output:
File location using os.getcwd(): /home/tuhingfg/Documents/Scripts>
Bemærk: Ved brug af os.getcwd() virker ikke som forventet, når du kører Python-koden fra en anden mappe end Python-scriptet.
Uventet resultat ved kørsel af Python-script fra en anden mappe end script ved hjælp af os.getcwd()
Python-scriptet er placeret inde /home/tuhingfg/Documents/Scripts . Når vi kører scriptet inde fra den samme mappe, giver det den korrekte scriptplacering. Men når vi ændrer vores bibliotek til et andet sted, udsender det placeringen af den mappe. Dette er fordi os.getcwd() overvejer den mappe, hvorfra vi udfører scriptet. Ud fra dette er resultatet af os.getcwd() varierer også.
Python3
java dato til streng
import> os> > print>(>'File location using os.getcwd():'>, os.getcwd())> |
>
>
Produktion:

Hent scriptplacering ved hjælp af os.getcwd()
Få Python Script-placeringen ved hjælp af os.path.realpath()-metoden
os.path.realpath() kan bruges til at få stien til det aktuelle Python-script. Faktisk bruges os.path.realpath()-metoden i Python til at få den kanoniske sti til det angivne filnavn ved at eliminere eventuelle symbolske links, der stødes på stien. En speciel variabel __fil__ videregives til realpath() metode til at få stien til Python-scriptet.
I dette eksempel er os.getcwd() og __fil__ give to forskellige resultater. Da vi udfører scriptet fra en anden mappe end scriptet, os.getcwd() output er ændret i henhold til mappen for udførelse af scriptet. Men __fil__ genererer det konstante resultat uanset den aktuelle arbejdsmappe.
Python3
import> os> > print>(>'File location using os.getcwd():'>,> >os.getcwd())> > print>(f>'File location using __file__ variable:'>+> >'{os.path.realpath(os.path.dirname(__file__))}'>)> |
>
>
Produktion:

Få en mappe med Python
Bemærk: __fil__ er stinavnet på filen, som modulet blev indlæst fra, hvis det blev indlæst fra en fil.