【问题标题】:sys.argv[0] is not showing the name of file in pythonsys.argv[0] 未在 python 中显示文件名
【发布时间】:2016-06-16 04:54:21
【问题描述】:

如果我理解正确,当键入 sys.argv[0] 时,它会显示正在处理的 .py 文件的名称。但是当我这样做时,它会显示一个不同的名称:

sys.argv[0]
'C:\\Anaconda\\lib\\site-packages\\spyderlib\\widgets\\externalshell\\start_ipython_kernel.py' 

文件的真实名称是'Ra x 13 arima.py',它位于'C:\Users\infantjo\Documents\Python Scripts\Projects\Work in Progress '

当前目录是:

os.getcwd()
'C:\\Users\\infantjo\\Documents\\Python Scripts\\Projects'

我做错了什么?

(我在 Spyder 2.3.8 中使用 Python 2.7.11,安装了 Anaconda 2.3.0,64 位)。

【问题讨论】:

  • 你说的'工作'是什么意思?你是说跑步吗? sys.argv[0] 给出了作为运行进程入口点运行的脚本的名称。见the docs
  • 抱歉,我的意思是我正在运行的代码。
  • getcwd() 是工作目录。这与您的代码所在的目录完全不同。为什么您希望它们相同?
  • 看起来 ipython/spyder 正在包装您的脚本。您可以退回到__file__,但它会为您提供当前模块的文件名。每个 py 文件都会给你它的名字,所以你只需要引用你的主模块的__file__

标签: python anaconda spyder


【解决方案1】:

argv 包含传递给 python 脚本的命令行参数列表。 argv[0] 是脚本名称。 doc

像 Spyder / PyCharm 这样的 IDE 不会直接运行脚本。它运行运行您的脚本的包装器。

在这种情况下,Spyder 运行start_ipython_kernel.py 脚本,该脚本将您的脚本名称作为参数并运行它。

如果您需要脚本名称,请使用 __file__ var。

【讨论】:

    猜你喜欢
    • 2019-11-28
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    相关资源
    最近更新 更多