if __name__ == '__main__' 如何:采用文件路径

问题描述

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

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,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

它不应该要求用户提供文件路径吗?我刚开始使用驱动程序代码,因此我可能会跳过编写驱动程序代码工作的一些部分。

有什么帮助吗?

解决方法

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

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

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

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