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

Python 运行os.path.realpath时与F5和F9的结果不同,python,directory,os.path,Python,Directory,Os.path,我对os.path.realpath(os.path.dirname(sys.argv[0])感到非常困惑。 以下是我的困惑: (1) 如果我第一次在spyder中打开脚本(并运行下面的选定行(F9): 它返回: dir_path = C:\Python27\lib\site-packages\spyderlib\widgets\externalshell 这不是我想要的结果 (2) 但是,如果我运行我的整个脚本(F5),我可以得到我期望的(,它是我脚本的当前目录)): (3) 此外,如果我:

我对os.path.realpath(os.path.dirname(sys.argv[0])感到非常困惑。

以下是我的困惑:

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

它返回:

dir_path = C:\Python27\lib\site-packages\spyderlib\widgets\externalshell
这不是我想要的结果

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

(3) 此外,如果我:

  • 运行整个脚本
  • %重置变量
  • 运行与之前相同的选定行
  • 只要不退出spyder,我仍然可以获取脚本的当前目录:

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

    有人能解释一下吗?非常感谢。多谢各位

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

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

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