2016-04-04 3 views
0

私はPython 2.7を実行するLinuxマシンを使用しています。 私は(ないこのマシンから)ファイルの完全なパスの親ディレクトリを取得するためにos.path.dirname()を使用したい、例えば:
C:\\documents and settings\\Dan\\yada\\1.txt =>
C:\\documents and settings\\Dan\\yadaWindowsパスでos.path.dirnameを使用する

につながる。しかし驚きだろう、私の代わりに空の文字列を取得します。

誰もがなぜそれを解決するか説明できますか?

+3

LinuxはACを知りません:\\ – Funonly

+0

あなたがそれをどのように呼んでいるかを示すためのコードはまったくありませんc。 'os.path.exists(path_you_passed_to_dirname)'の結果は何ですか?どのようにWindowsマシンに接続していますか?ここではあまりにも多くのアドレス指定されていないものがあります。 –

+0

@Simonもっと正確に言えば、Linuxでは 'C:\ documents and settings \ Dan \ yada \ 1.txt'は有効なファイル名です('/home/dan/C:\ documentsとsettings \ Dan \ yada \ 1.txt'のように '' ''(空文字列)であるので、 '' os.path.dirname( "1.txt") 'も' '' 'と同じように、ファイル名だけです。 – gregmac

答えて

3

利用代わりntpath

>>> import ntpath 
>>> ntpath.dirname('C:\\documents and settings\\Dan\\yada\\1.txt') 
'C:\\documents and settings\\Dan\\yada' 

the documentationから:

異なるオペレーティングシステムが別のパス名規則を持っているので、標準ライブラリでは、このモジュールのいくつかのバージョンがあります。 os.pathモジュールは、常にPythonが動作しているオペレーティングシステムに適したパスモジュールであるため、ローカルパスに使用できます。ただし、異なる形式のいずれかで常にのパスを操作する場合は、個々のモジュールをインポートして使用することもできます。彼らは皆、同じインタフェースがあります

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