簡體   English   中英

為什么os.path同時使用'\\'和'/'?

[英]Why does os.path use both '\' and '/'?

當我在Windows上獲取文件的os.path.dirname()時,它使用/字符(由Windows轉換為\\),但是當我在os.path.join()中使用其他東西的路徑時,它使用\\字符(如預期的那樣)。

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 shell的python myfile.py運行命令。

我使用的是Anaconda3發行版,它安裝在C:\\Users\\me\\AppData\\Local\\Continuum\\Anaconda3\\python.exe

λ which python
/cygdrive/c/Users/me/AppData/Local/Continuum/Anaconda3/python

因為你是從cygwin運行的,所以這些路徑不是原生的,但是為了能夠正常工作而改變了cygwin(MSYS也是如此)。

所以作為一個副作用,當python請求當前文件時,它會返回斜杠。

但是anaconda仍然是一個原生的Windows發行版,它解釋了你在加入字符串時得到\\ (native os.sep )。

要使用本機分隔符( \\ here)獲取__file__路徑,只需執行以下操作:

os.path.normpath(__file__)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM