Vraag Zoek de huidige map en de map van het bestand [dupliceren]


Deze vraag heeft hier al een antwoord:

In Python, welke commando's kan ik gebruiken om te vinden:

  1. de huidige directory (waar ik in de terminal was toen ik het Python-script draaide), en
  2. waar het bestand dat ik aan het uitvoeren ben?

1493
2018-02-28 01:51


oorsprong


antwoorden:


Om het volledige pad naar de map te krijgen waarin zich een Python-bestand bevindt, noteer dit in dat bestand:

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

(Merk op dat de bovenstaande incantatie niet werkt als je al hebt gebruikt os.chdir() om uw huidige werkdirectory te wijzigen, omdat de waarde van de __file__ constant is relatief ten opzichte van de huidige werkdirectory en wordt niet gewijzigd door een os.chdir() noemen.)


Om de huidige werkdirectory te gebruiken

import os
cwd = os.getcwd()

Documentatiereferenties voor de hierboven gebruikte modules, constanten en functies:

  • De os en os.path modules.
  • De __file__ constante
  • os.path.realpath(path) (komt terug "het canonieke pad van de opgegeven bestandsnaam, waarbij alle symbolische koppelingen worden verwijderd die in het pad worden aangetroffen")
  • os.path.dirname(path) (komt terug "de mapnaam van padnaam path")
  • os.getcwd() (komt terug "een tekenreeks die de huidige werkdirectory vertegenwoordigt")
  • os.chdir(path) ("verander de huidige werkdirectory in path")

2263
2018-02-28 01:54



Huidige werkdirectory: os.getcwd ()

En de __file__-kenmerk  kan je helpen te achterhalen waar het bestand dat je aan het uitvoeren bent zich bevindt. Dit SO-bericht legt alles uit: Hoe krijg ik het pad van het huidige uitgevoerde bestand in Python?


271
2018-02-28 01:53



U vindt dit misschien handig als referentie:

import os

print("Path at terminal when executing this file")
print(os.getcwd() + "\n")

print("This file path, relative to os.getcwd()")
print(__file__ + "\n")

print("This file full path (following symlinks)")
full_path = os.path.realpath(__file__)
print(full_path + "\n")

print("This file directory and name")
path, filename = os.path.split(full_path)
print(path + ' --> ' + filename + "\n")

print("This file directory only")
print(os.path.dirname(full_path))

225
2017-12-05 10:18



1. Om het volledige pad van de huidige map te krijgen

    >>import os
    >>print os.getcwd()

o / p: "C: \ Users \ admin \ myfolder"

1. Om de huidige naam van de mapmap alleen te krijgen

    >>import os
    >>str1=os.getcwd()
    >>str2=str1.split('\\')
    >>n=len(str2)
    >>print str2[n-1]

o / p: "myfolder"


47
2018-04-24 07:00



Als u de huidige map probeert te vinden van het bestand waarin u zich momenteel bevindt:

OS agnostische manier:

dirname, filename = os.path.split(os.path.abspath(__file__))

33
2017-10-07 09:10



Antwoord op # 1:

Als u de huidige map wilt, doet u dit:

import os
os.getcwd()

Als je alleen maar een mapnaam wilt en je hebt het pad naar die map, doe dit dan:

def get_folder_name(folder):
    '''
    Returns the folder name, given a full folder path
    '''
    return folder.split(os.sep)[-1]

Antwoord op # 2:

import os
print os.path.abspath(__file__)

26
2017-11-05 09:31



Een beetje laat op het feest, maar ik denk dat de meest beknopte manier om alleen de naam van je huidige uitvoeringscontext te vinden zou zijn

current_folder_path, current_folder_name = os.path.split(os.getcwd())

25
2017-10-09 10:31