当前位置: 首页 > news >正文

【PlotNeuralNet】pycharm中运行为什么一定要用 文件名.py,而不能 .\路径\文件名.py?

先看代码:

点击查看代码
def main():namefile = str(sys.argv[0]).split('.')[0]to_generate(arch, namefile + '.tex' )

原来的方法 namefile = str(sys.argv[0]).split('.')[0] 不行,核心原因是它依赖 sys.argv[0] 来获取当前脚本名称,但 sys.argv[0] 的值并非在所有情况下都可靠——它会受运行环境的影响,可能导致获取不到正确的脚本名,甚至得到空字符串。

关键问题:sys.argv[0] 的不确定性

sys.argv 是 Python 从命令行接收的参数列表,其中 sys.argv[0] 理论上是「当前执行的脚本路径/名称」,但实际值取决于如何运行脚本

  1. 命令行运行(正常情况)
    如果你在终端输入 python my_script.pysys.argv[0] 会是 my_script.py(或完整路径,如 ./my_script.py)。这时 split('.')[0] 能正确提取 my_script

  2. IDE 运行(问题场景)
    如果你用 VS Code、PyCharm 等 IDE 直接点击「运行」按钮,IDE 为了控制运行环境(比如传递额外参数、管理虚拟环境),可能会:

    • sys.argv[0] 传递空字符串 ''(部分 IDE 的默认行为);
    • 传递 IDE 内部的临时路径(而非脚本本身的名称);
    • 传递脚本的完整路径(但包含特殊字符或多个 .,导致 split 出错)。

    比如:

    • sys.argv[0] 是空字符串 ''split('.') 会得到 [''],取第 0 个元素还是空字符串;
    • 最终 namefile + '.tex' 就变成了 .tex
  3. 其他异常情况
    如果脚本被其他程序通过 subprocess 调用,且调用时没指定 sys.argv[0],也可能导致其值异常(比如为空或为调用程序的名称)。

总结:为什么原来的方法不可靠?

sys.argv[0] 是「命令行传入的脚本名」,而非「脚本本身的真实名称」——它依赖外部调用方式,环境变了,值就可能错。
而我们需要的是「当前脚本本身的文件名」,这只能通过 Python 内置的 __file__ 属性获取(__file__ 是 Python 解释器自动设置的,指向当前脚本的绝对路径,不受外部调用方式影响)。

因此,原来的方法因为依赖不稳定的 sys.argv[0],在非命令行环境下会失效;而用 __file__ + os.path 处理,才能稳定获取正确的文件名。

http://www.gsyq.cn/news/50424.html

相关文章:

  • 2025年90度尖角精致钢生产厂家权威推荐榜单:合金精致钢/精密焊接精致钢/90度精致钢源头厂家精选
  • 解锁Android手机
  • OpenCVSharp:使用 MOG(Mixture of Gaussians,高斯混合模型)算法来从视频流中分离前景和背景
  • STM32 中的 printf
  • 2025年国内有实力的智能家居品牌综合评估与选择指南
  • 2025年潜水泵优质厂家权威推荐榜单:小型抽水泵/深井潜水泵/电动水泵源头厂家精选
  • 2025 年三丰影像仪经销商最新推荐排行榜:权威测评原装正品供应商、经销商及代理商,精准匹配精密制造检测需求三丰圆度仪/三丰物镜/三丰(Mitutoyo)/三丰精密量仪供应商推荐
  • 浅谈 SOS DP
  • 第三章作业
  • 腹泻与脱水
  • 2025年烘焙乳化剂定做厂家权威推荐榜单:保健品原料/稳定剂/制酶剂源头厂家精选
  • 【git 学习】-b v5.4.1 --recursive是什么意思
  • 2025年玻璃防霉纸厂家权威推荐榜单:铝板衬纸/晶圆隔离纸/电池片隔离纸源头厂家精选
  • 2025年陶瓷密封环圆台平面磨床批发厂家权威推荐榜单:陶瓷密封筒磨削圆台平面磨床/纸管圆刀片圆台平面磨床/包装材料圆刀片圆台平面磨床源头厂家精选
  • 2025年二氧化碳气体膨胀爆破实力厂家权威推荐榜单:气体爆破原理/气体膨胀爆破/气体爆破源头厂家精选
  • 2025年智慧客房系统供应商权威推荐榜单:行业领军企业深度解析
  • load_balance函数代码详解
  • AI 应用开发新选择:JBoltAI 框架适配 Java 生态,无缝集成现有项目
  • 题解:P14508 猜数游戏 guess
  • Why blog today
  • 从架构到体验:友猫社区平台的全栈便捷的技术解析与作用体系详解
  • 2025辽宁网络推广品牌最新TOP5评测推荐:赋能品牌增长新引擎
  • 用户数据采集实验软件
  • 算法第三章作业
  • 2025辽宁自媒体宣传公司/服务商最新TOP5榜单推荐:引领数字营销新生态
  • 如何批量標記 bangumi 往季新番
  • 如何遷移 bangumi 賬號
  • 免费AI论文写作工具推荐TOP6:高效生成+低查重率必备神器
  • 2025辽宁视频号推广公司最新top5推荐:腾讯生态营销新势力
  • 详细介绍:机器学习高级-Chapter 04-概率论与贝叶斯分类