Windows上でファイルのos.path.dirname()
を取得すると、/文字(Windowsでは\に変換されます)が使用されますが、他のものとのパスがos.path.join()
の場合、期待通りに\が使用されます。なぜos.pathは ''と '/'の両方を使用しますか?
import os
cwd = os.path.dirname(__file__)
print(cwd) # C:/Users/me/Documents/dir1
parent_dir = os.path.join(cwd, '..')
print(parent_dir) # C:/Users/me/Documents/dir1\..
Windowsはこれをうまく処理します。 MSDNごとのように:Windows APIの変換で
ファイルI/O機能「/」「\」と「\\ \?」を使用している場合を除き、NT-スタイル名に名前を変換するの一環として、接頭辞は次のセクションで詳しく説明します。
しかし、なぜ両方のスラッシュが最初に使用されるのですか?
EDITS:
私はCygwinのシェルからpython myfile.py
を使用してコマンドを実行します。
私はC:\Users\me\AppData\Local\Continuum\Anaconda3\python.exe
にインストールされたAnaconda3ディストリビューションを使用しています。
λ which python
/cygdrive/c/Users/me/AppData/Local/Continuum/Anaconda3/python
は、Windows(最初の出力)にスラッシュを再現することはできません。どのようにあなたのpythonファイルを実行するのですか? –
@ Jean-FrançoisFabre私はアナコンダを使用しています。編集を参照してください。 – Aaron
偶然cygwinから実行していますか? –