[英]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.