首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么os.path同时使用“\”和“/”?

为什么os.path同时使用“\”和“/”?
EN

Stack Overflow用户
提问于 2017-02-22 20:10:32
回答 1查看 97关注 0票数 1

当我在Windows上获得文件的os.path.dirname()时,它使用/字符(被转换为\ os.path.join() ),但是当我与其他东西一起使用该路径时,它使用\字符(如预期的那样)。

代码语言:javascript
复制
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样式名称的一部分,但使用“\?”前缀的情况除外,详见以下章节。

但是为什么这两个斜线的使用会首先发生呢?

编辑:

我使用Cygwin使用python myfile.py运行这个命令。

我使用的是Anaconda3发行版,它安装在C:\Users\me\AppData\Local\Continuum\Anaconda3\python.exe上。

代码语言:javascript
复制
λ which python
/cygdrive/c/Users/me/AppData/Local/Continuum/Anaconda3/python
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-22 20:24:20

因为您是从cygwin运行的,所以路径不是本机的,而是为了使cygwin能够正常工作而更改的(MSYS也是这样做的)。

因此,作为一个副作用,当python请求当前文件时,它会用斜杠返回。

但是anaconda仍然是一个本机windows发行版,这解释了当您加入字符串时会得到\ (本机os.sep)。

要获得带有本机分隔符的__file__路径(此处为\),只需执行以下操作:

代码语言:javascript
复制
os.path.normpath(__file__)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42401308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档