繁体   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