2017-01-03 1 views
0

Ich versuche, die Ausdrucksstruktur von os.path.isdirkann nicht Informationen über os.path Attribut in Python bekommen

zu verstehen, wenn Typ:

help(os) 

ich mit einer Liste der ‚Dinge‘ zur Verfügung gestellt werde python kann von os

verwende ich keinen Eintrag gibt path genannt eher pathconf(...)

Ho finden wever, wenn ich schreibe:

help(os.path) 

Die Optionen, die ich zur Verfügung gestellt habe umfassen isdir(s)

Warum erhalte ich keine Informationen über path zu sehen?

Antwort

1

os.path ist ein Modul. Daher erscheint es nicht in der Hilfe für os. Vielmehr hat es seine eigene Hilfe. os.path.__file__ zeigt Ihnen den tatsächlichen Pfad dieses Moduls. Aus der Dokumentation von os:

  • os.path ist entweder posixpath oder ntpath

Relevante Teil der Quelle der os:

if 'posix' in _names: 
    # ... 
    import posixpath as path 
elif 'nt' in _names: 
    # ... 
    import ntpath as path 
+0

Ich finde das eher verwirrend, da ich bis jetzt verstanden habe, dass die Punktierungskonvention verwendet wurde, um eine Strukturänderung zwischen say 'module.class.function' anzuzeigen - ich hätte gedacht, dass ein Modul aus zwei Wörtern python folgen würde Konvention und getrennt wie 'osPath' oder' os_path' statt mit einem '.' Es sei denn, ich missverstanden gerade die Verwendung von' .' – ARL

+1

Ja, Sie missverstanden die Verwendung. 'x.y' bedeutet nur Suchattribut' y' auf Objekt 'x', die Hierarchie von Objekten muss hier nicht spezifisch' module' -> 'class' ->' function' sein (obwohl das ein allgemeines Muster ist). Im Fall von 'os.path.isdir' ist es 'Modul' ->' Modul' -> 'Funktion'. – wim

+1

Der Punkt gibt Ihnen Zugriff auf ein Attribut. In diesem Fall importiert das Modul "os" Pfad. Daher können Sie es über 'module.attribute' erreichen, d. H.' Os.path'. Oder, 'path' ist nur ein globaler Name in' os'. –

4

Das ist, weil der Name path ist nicht direkt im Modul os.py definiert. Stattdessen wird es von anderswo importiert und mit Aliasing versehen. Die Implementierung ist plattformabhängig.

Auf Windows systems haben Sie:

import ntpath as path 

Auf Linux/macOS haben Sie:

import posixpath as path 

Da os.path ist nur ein Verweis auf ein anderes Modul wie posixpath oder ntpath, können Sie immer aussehen um help(os.path).

0

os ist /usr/lib/python2.7/os.py und os.path ist /usr/lib/python2.7/posixpath.py (oder ntpath.py unter Windows). Die help Funktion liest einfach die Docstrings aus diesen beiden Dateien.

Verwandte Themen