【问题标题】:How does if __name__ == '__main__': takes file pathif __name__ == '__main__': 如何获取文件路径
【发布时间】:2021-05-12 11:21:27
【问题描述】:

我编写了一个驱动程序代码来获取用户的文件路径并在我的函数中使用该文件路径。驱动代码如下;

import sys
if __name__ == '__main__':
    if len(sys.argv) != 2:
        print("Usage: %s input_file" % sys.argv[0])
        sys.exit()

    file_path = sys.argv[1]
    connection, color, numOf_Nodes,links = read_problem(file_path)

    print(links)
    graph_coloring(connection, color, 0, numOf_Nodes)

但是当我运行这段代码时,我得到了以下错误:

Usage: C:\ProgramData\Anaconda3\lib\site-packages\ipykernel_launcher.py input_file
An exception has occurred, use %tb to see the full traceback.

SystemExit

它不应该向用户询问文件路径吗?我是新来使用驱动程序代码,因此我可能会跳过编写驱动程序代码工作的一些部分。

有什么帮助吗?

【问题讨论】:

  • edit您的问题以修复代码中的缩进。
  • 您必须在命令行中传递输入文件名。
  • @Code-Apprentice 谢谢!我已经改正了
  • 这个文件的名字是什么?你是如何运行这段代码的?您是在命令行中运行它还是在 Python IDLE 或 Jupyter Notebook 等 IDE 中运行它?
  • 我唯一的建议是按照错误消息中的说明执行操作:“发生异常,使用 %tb 查看完整的回溯。”不过,我不知道这到底是什么意思,我也不熟悉 ipython。

标签: python main python-module argv sys


【解决方案1】:

代码期望用户在命令行上传递文件路径。你想用这样的东西来执行你的代码:

python ipykernel_launcher.py /path/to/input/file

在执行您的代码时,变量file_path 将获得/path/to/input/file 的值。

变量sys.argv 在第一个位置包含脚本名称,后跟在命令行中传递给脚本的每个参数。这就是为什么2 在这里是适当的期望......数组中的第一个值是脚本名称。第二个值是程序的文件路径参数。

【讨论】:

  • @SteveActually 我将通过命令提示符提交此代码文件(.py 文件)和 submit.pyc 文件。但是它无法提交给系统。通常它应该不提供文件路径。因此我怀疑可能是我在驱动代码部分做错了什么。
  • @svn_21 你提交的代码文件到底是什么?听起来我们需要更多详细信息来帮助您。
  • @Code-Apprentice 创建了一个网站来通过 submit.pyc 文件接收我们的提交。我有自己的用户名和密码。我从 cmd 使用这个命令:python submit.cpython-38.pyc 1 -u username -p password。在工作目录中,我有我的数据文件、.py 文件和 manifest.txt。因此,通常仅通过上述命令它应该获取文件和清单并提交到提交网站
  • @svn_21 那么这是大学课堂作业吗?听起来你需要问你的导师如何做你想做的事。
  • @Code-Apprentice 是的,我问过我的导师,但她说我应该检查我的代码:/我检查了我的功能它们都在工作,所以我怀疑我做了某事驱动程序代码部分错误:/
猜你喜欢
  • 2020-05-16
  • 2018-11-22
相关资源
最近更新 更多