2012-04-23 10 views

答えて

11

私は個人的にはosos.pathの間に少し矛盾があります。ドキュメントによると、os.pathは、特定のプラットフォーム(つまり、OS X、Linux、およびBSDの場合はposixpath、Windowsまたは古代のMacの場合は別のものが得られる)上のパスで動作するモジュールの別名にする必要があります)。

 
>>> import os 
>>> help(os) 
Help on module os: 

NAME 
    os - OS routines for Mac, NT, or Posix depending on what system we're on. 
... 
>>> help(os.path) 
Help on module posixpath: 

NAME 
    posixpath - Common operations on Posix pathnames. 

listdir機能ではなく、それはパスで識別されるディレクトリ上で動作し、パス自体には動作しません。 os.pathの関数のほとんどは、実際のパスで動作し、ではなく、ファイルシステム上のです。

これは、os.pathの多くの関数が文字列操作関数であり、osのほとんどの関数がIO関数/ syscallsであることを意味します。

例:

  • os.path.joinos.path.dirnameos.path.splitext、単なる文字列操作関数です。

  • os.listdiros.getcwdos.removeos.statは、すべてのシステムコールであり、実際にファイルシステムをタッチします。

反例:

  • os.pathexistsgetmtimeislink、基本的os.statのラッパーである他人を有し、ファイルシステムをタッチ。私はそれらを分類していないと考えますが、他の人はそれに同意しないかもしれません。
日の

楽しいファクト:あなたは、ライブラリのドキュメントのトップレベルのモジュールを見つけることができませんが、あなたは実際に実際にそのプラットフォーム上で実行することなく、任意のプラットフォーム用os.pathのバージョンをインポートすることができます。これは、しかし、あなたはまた、インポートして、異なる形式のいずれかで常にパスを操作したい場合は、個々のモジュールを使用することができます

os.pathのドキュメントに記載されています。彼らは皆、同じインタフェースがあります

UNIX形式のパスのための
  • posixpath
  • 、Windowsのパスの
  • ntpath
  • 古いスタイルのための
  • macpath MacOSのパスをOS/2 EMXパスの
  • os2emxpath

osと同じことをすることはできません。 nse。

+0

ありがとう。 os.pathに文字列以外のオブジェクトを配置することに同意します。別の理由があるかもしれません。 – euphoria83

+1

@ euphoria83:「既存のコードを壊さない」ことは、*非常に*良い理由です。彼らはPython 3のためにそれを動かすことができました。 –

関連する問題