江湖散人 发表于 2021-7-19 10:28:35

命令行参数的传入问题

import sys
a = sys.argv
print(a)


我想从命令行传入参数,传进去后,电脑下方的pycharm确实闪动了,应该是传参成功了,但是运行程序后却显示了:
Traceback (most recent call last):
File "D:/Python/FluentPython/chap12/demon10.py", line 6, in <module>
    a = sys.argv
IndexError: list index out of range

这是什么原因啊?哪位前辈帮忙解答一下啊,谢谢啊

逃兵 发表于 2021-7-19 10:31:04

报错是超出索引
import sys
a = sys.argv
print(a)

江湖散人 发表于 2021-7-19 10:35:56

逃兵 发表于 2021-7-19 10:31
报错是超出索引

我知道sys.argv是当前文件路径。但是我要从命令行传入参数,让他显示出来sys.argv,但是结果却没有显示。为什么?

逃兵 发表于 2021-7-19 10:38:23

江湖散人 发表于 2021-7-19 10:35
我知道sys.argv是当前文件路径。但是我要从命令行传入参数,让他显示出来sys.argv,但是结果却没有 ...

命令行前面需要输入python
python demon10.py 参数1 参数2

江湖散人 发表于 2021-7-19 10:44:52

逃兵 发表于 2021-7-19 10:38
命令行前面需要输入python

import sys
a = sys.argv
print(a)

运行后,显示的是空列表,为啥呢?

逃兵 发表于 2021-7-19 10:53:16

江湖散人 发表于 2021-7-19 10:44
运行后,显示的是空列表,为啥呢?

这些参数是在运行内存中的
而非保存在py文件中
也就是说都是在运行过程中临时存在
为了实现外部传参的过程

#demon10.py

import sys
a,b,c=sys.argv

print(f'{a}是个{b}的{c}')

python demon10.py 今天 阳光明媚 日子

江湖散人 发表于 2021-7-19 11:05:41

逃兵 发表于 2021-7-19 10:53
这些参数是在运行内存中的
而非保存在py文件中
也就是说都是在运行过程中临时存在


你的意思是无论如何,py文件都不能打印出命令行中的参数?

逃兵 发表于 2021-7-19 11:08:57

江湖散人 发表于 2021-7-19 11:05
你的意思是无论如何,py文件都不能打印出命令行中的参数?

通过终端运行 py文件 并传参 这样是能打印出来的

独立运行py文件是不行的

逃兵 发表于 2021-7-19 11:10:11

江湖散人 发表于 2021-7-19 10:44
运行后,显示的是空列表,为啥呢?

你这里蓝色的截图就是通过终端运行并打印的
下面的
['参数1','参数2']
就是Python的打印结果

江湖散人 发表于 2021-7-19 11:22:05

逃兵 发表于 2021-7-19 11:10
你这里蓝色的截图就是通过终端运行并打印的
下面的
['参数1','参数2']


也就是说,通过命令行终端才能打印出sys.argv中的参数,
而运行python文件是没办法直接打印sys.argv的参数。
是这么个意思吗?

逃兵 发表于 2021-7-19 11:23:02

江湖散人 发表于 2021-7-19 11:22
也就是说,通过命令行终端才能打印出sys.argv中的参数,
而运行python文件是没办法直接打印sys.argv的参 ...

是的

江湖散人 发表于 2021-7-19 11:26:18

逃兵 发表于 2021-7-19 11:23
是的

好的 ,谢谢你!
页: [1]
查看完整版本: 命令行参数的传入问题