运行os.path.realpath时,F5和F9的结果不同

时间:2018-02-13 14:35:24

标签: python directory os.path

我对 os.path.realpath(os.path.dirname(sys.argv [0]))

感到非常困惑

这是我的困惑:

(1)如果我在spyder中打开我的脚本( 第一次 )并运行下面的选定行(F9):

import os
import sys
dir_path = os.path.realpath(os.path.dirname(sys.argv[0]))

它返回:

dir_path = C:\Python27\lib\site-packages\spyderlib\widgets\externalshell

我想要的结果。

(2)但是,如果我运行整个脚本(F5),我可以得到我期望的结果( 这是我脚本的当前目录 ):< / p>

dir_path = C:\Users\abc\Desktop\py

(3)另外如果我:

  1. 运行整个脚本,
  2. %重置变量,
  3. 运行与以前相同的选定行
  4. 我仍然可以 我的脚本的当前目录,只要我不退出spyder

    dir_path = C:\Users\abc\Desktop\py
    

    古尔克,请有人解释一下这个问题吗?非常感谢。非常感谢你!

1 个答案:

答案 0 :(得分:1)

要获取当前的完整路径名,您可以使用

os.path.realpath(os.path.curdir)

至于混淆,请打印sys.argv进行检查。其内容可以包含不同的值,具体取决于脚本的调用方式。如果我只是进入python解释器,它会保存一个带有空字符串的列表,但如果我调用python myscript.py,它将保存脚本名称,后跟任何参数。