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

different result from F5 and F9 when running the os.path.realpath

我对os.path.realpath(os.path.dirname(sys.argv[0]))[=49感到很困惑=]

这是我的困惑:

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

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

它returns:

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

不是我想要的结果。

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

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

(3) 另外如果我:

  1. 运行整个脚本,
  2. %重置变量,
  3. 运行 与之前相同的选择行,

只要我不退出spyder:[=16=,我仍然可以获得我脚本的当前目录]

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

有人可以解释一下吗?我们将不胜感激。非常感谢!

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

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

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