【问题标题】:Python 'sys.argv[0]' gives diffenent results [duplicate]Python'sys.argv [0]'给出了不同的结果[重复]
【发布时间】:2021-12-28 11:54:28
【问题描述】:

环境 蟒蛇3.9.6; 视窗 10

第一季度。为什么我在使用 'sys.argv' 时会得到不同的结果?

脚本文件的完整路径 >> "C:\example\test.py"

代码

import sys
print(sys.argv[0])

那么下面是结果。

如果我通过 CMD 执行它,比如“python test.py”,

test.py

如果我通过 IDLE 或 VS CODE 执行它,

C:\example\test.py

第二季度。获取“主”脚本文件目录的最佳方法是什么?

我需要下面的“SOMETHING_HERE”,结果是“C:\example”。

if __name__ == "__main__":
    result = SOMETHING_HERE()
    print(result)

“sys.argv”不是关于第一季度问题的选项。 “os.getcwd()”也不是,因为它实际上给出了“当前工作文件夹”,这不是我需要的确切结果。有没有其他选项可以让我安全地获取目录?

【问题讨论】:

标签: python python-3.x


【解决方案1】:

您可以在脚本中执行以下操作:

from pathlib import Path
print (Path(__file__))

如果您需要进一步处理路径,使用 Path 将允许您检查路径(文件夹位置,...)

您可以执行的典型操作:

parent_folder = Path(__file__).parent

在此处查看更多信息: https://docs.python.org/3/library/pathlib.html

【讨论】:

  • 请参阅How to Answer,包括回答正确提出的问题部分,以及其中关于“之前已被多次询问和回答”的问题的要点。跨度>
  • 现有答案已链接到问题 -- 向上滚动到最顶部。
  • (我不太关心帮助 OP,而更关心帮助通过 Google 搜索的人 - 关闭重复 as 重复意味着我们没有搜索结果中有一堆半回答的问题,而是有较少数量的全面回答的问题;也就是说,同样的原则也有助于 OP - 指向他们问题的预先存在的实例有更多的眼睛审查、评论、编辑、改进等。它的答案意味着他们得到了质量更好的帮助,即使没有如此定制)。
  • stackoverflow.blog/2011/01/05/…,从更接近网站的创建,解释关闭重复的方法背后的基本原理(同时保持知识库中那些关闭的、重复的问题作为指向具有高标准实例的指针) - 质量答案)。
猜你喜欢
  • 2018-06-04
  • 2017-03-23
  • 2013-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多