为什么我在一条路径中看到正斜杠而在另一条路径中看到反斜杠?

时间:2018-01-09 09:37:46

标签: python-3.x pycharm

使用pycharm 2017.3(edu)和python3.6.4

modulesTut1.py:

import modulesTut2
print(__file__)

modulesTut2.py:

def f():
    print("f1")
print(__file__)
v = [1, 2, 3, 4, 5]

OUTPUT ::

C:\Users\shashank\PycharmProjects\python_rest\modulesTut2.py
C:/Users/shashank/PycharmProjects/python_rest/modulesTuts1.py

当我使用

时,它确实得到修复
__file__ = os.path.abspath(__file__) 

在两个文件中打印__file__变量之前。

1 个答案:

答案 0 :(得分:1)

这种现象确实存在并且似乎非常简单:对于导入的模块,__file__使用OS本机表示法,但对于作为命令行参数传递给Python的主.py文件,它只是包含与参数一起提供的内容。

我们说我们有文件夹C:\Users\me\Python\test\extra和文件

C:\Users\me\Python\test\a.py

import b
print(__file__)

C:\Users\me\Python\test\b.py

print(__file__)

然后,如果您留在C:\Users\me\Python\test并输入python a.py,您将获得

C:\Users\me\Python\test>python a.py
C:\Users\me\Python\test\b.py
a.py

如果你留在任何地方,并输入完整路径,请python C:\Users\me\Python\test\a.py

C:\>python C:\Users\me\Python\test\a.py
C:\Users\me\Python\test\b.py
C:\Users\me\Python\test\a.py

但是,如果你只是将一些反斜杠切换为正斜杠,那也会起作用:

C:\>python C:\Users/me/Python\test\a.py
C:\Users\me\Python\test\b.py
C:\Users/me/Python\test\a.py

也会显示相对路径,包括..

C:\Users\me\Python\test\extra>python ..\a.py
C:\Users\me\Python\test\b.py
..\a.py  
     

甚至

C:\User\me\Python\test\extra>python c:../..\test\a.py
C:\User\me\Python\test\b.py
c:../..\test\a.py

TL; DR:PyCharm似乎通过正斜杠传递完整路径,这就是你在__file__中得到的。