我正在学习 LearnPythonTheHardWay 中的练习。无论在哪里使用 argv,作者的第一个参数都包含脚本文件的名称(例如“ex14.py”),但我得到了这个文件的完整路径 - “D:_MyCode\Python\LPTHW\ex14.py” (我从 cmd 运行)。它取决于什么?应该更改什么以及在哪里更改,以便 argv[0] 只包含脚本的名称?
我正在学习 LearnPythonTheHardWay 中的练习。无论在哪里使用 argv,作者的第一个参数都包含脚本文件的名称(例如“ex14.py”),但我得到了这个文件的完整路径 - “D:_MyCode\Python\LPTHW\ex14.py” (我从 cmd 运行)。它取决于什么?应该更改什么以及在哪里更改,以便 argv[0] 只包含脚本的名称?
结论:
取决于您如何运行脚本。
或者
如果将 python 文件夹添加到系统路径并且扩展名为 *.py 的文件与 python 相关联
python <script>启动表单的文档说它argv[0]包含命令行上给出的内容:如果您看到完整路径,那么您运行脚本的方式就是将完整路径传递
python给命令(例如,当.py文件扩展名与python.exeWindows 上的 c 相关联时)。也就是说,如果您
python ваш-скрипт.py在命令行上手动运行它(从包含ваш-скрипт.py该文件的目录),它将sys.argv[0]只是'ваш-скрипт.py'.虽然在技术上可以覆盖脚本的调用方式,例如,在运行脚本之前
cd创建一个 bat 文件放在脚本所在的目录中(这可能会更改其当前工作目录) ,但不应该这样做,因为要在脚本本身中获取所需的字符串是可能的,而不会破坏系统上其他 python 程序的启动。如果您想准确地从以下位置获取名称
argv[0]:通常,
argv[0]不需要指向磁盘上的脚本,请参阅Run program with process name changed。一个模块可以有
__file__一个属性,文件名也可以从中剥离。它并不总是被定义,例如当一个模块使用execfile()内置函数运行时。相关问题:如何正确确定 Python 中的当前脚本目录?.此外,模块名称不必与文件名相关联——模块根本不必位于任何文件中。如果模块作为脚本执行,则
__name__ == '__main__'.关于正在使用的命令行及其与 argv 列表的关系的主题:Full command line as it was typed。
获取磁盘上文件的名称(无论启动位置如何):