2016-11-28 3 views
0

Recent i Pfadnamen Manipulation in Python wurde das Lernen, ein grundlegendes Verständnis von Modulen mit den folgenden Aussagen verwirrt michPython Submodule und Pfadnamen Manipulation

os und os.path sind beide Module :(wie ist das möglich

Dann schaute ich auf os.py Quellcode und gefunden sind folgende erleuchtende Zeile Code

57. import posixpath as path 

Meine Frage

Warum sollte ich os.path.join('bin','utils') anstelle von posixpath.join('bin','utils') verwenden?

Was ist die einfachste Möglichkeit, x und x.y als beide Module zu exlainieren und wann sollte ich diese Technik anwenden?

+2

Relevant: http://stackoverflow.com/questions/2724348/should-i-use-import-os-path-or-import-os- "Der' os.path' Name ist ein Alias ​​für dieses Modul auf Posix-Systemen, auf anderen Systemen (zB Mac, Windows), "os.path" bietet die gleichen Operationen in einer spezifischen Weise für diese Plattform und ist ein Alias ​​zu einem anderen Modul (zB macpath, ntpath) " –

+1

Wenn Sie Schauen Sie sich den Kontext dieses 'PosixPfad importieren als Pfad' an. Sie werden sehen, dass dies nur passiert, wenn das Skript auf einem Posix System läuft. 'posixpath' soll nicht direkt vom normalen Benutzercode verwendet werden, Sie sollten' os' diese Details für Sie behandeln lassen. Andernfalls funktioniert Ihr Skript nicht auf Nicht-Posix-Systemen. –

+0

Ich habe die Antwort geposted, danke an @Chris_Rands und @PM 2Ring für das Hinzeigen. Obwohl jemand 'posixpath' benutzen kann, wenn er genau weiß, was er/sie macht, ist" os.path "die beste Wahl –

Antwort

0

Verwenden os.path.join('bin','utils') statt posixpath.join('bin','utils')

ich feststellen, dass os.path mit robuster ist, dass posixpath direkt verwenden.

os.path bieten Kompatibilität mit verschiedenen Betriebssystemen. Vereinfachte Code von os.py

if 'posix' == os.name : 
    from posix import * 
    import posixpath as path 
elif 'nt' == os.name : 
    from nt import * 
    import ntpath as path 
.... 

Wie Sie os.path sehen wird gewährleistet Sie manipulieren Weg für die aktuellen os Besonderheiten.