找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 5121|回复: 4

[已解决] python 程序获取不到参数 sys.argv[1:]

1

主题

2

帖子

2

积分

贫民

积分
2
ouc0217 发表于 2016-8-30 14:20:08 | 显示全部楼层 |阅读模式
请教大家一个问题, 我安装的Python 2.7.12在一台windows 10 上面. 在 command line 运行 .py 脚本的时候得不到传入的参数 sys.argv[1:]. 比如我有一个 1.py, 里面内容如下,
import sys

print "hello"
print sys.argv[1:]

当我在command line 运行 1.py aaa bbb ccc 的时候, 只打印了 hello.

但如果我在command line运行 python.exe 1.py aaa bbb ccc 的时候会打印
hello
['aaa', 'bbb', 'ccc']
回复

使用道具 举报

5

主题

165

帖子

165

积分

版主

Rank: 7Rank: 7Rank: 7

积分
165

热心会员突出贡献优秀版主荣誉管理

mongo 发表于 2016-8-30 15:45:21 | 显示全部楼层
命令行参数传递到一个Python脚本列表。argv [ 0 ]是脚本的名称(这取决于操作系统,这是否是一个完整的路径名或不)。如果命令是使用C的命令行选项的解释器解释执行,argv [ 0 ]设置为字符串“C”。如果没有脚本的名字是通过Python解释器,argv [ 0 ]是空字符串。
回复 支持 反对

使用道具 举报

1

主题

2

帖子

2

积分

贫民

积分
2
ouc0217  楼主| 发表于 2016-8-30 15:47:33 | 显示全部楼层
我能得到argv[0]的值是 1.py, 但是 argv[1] 后面所有的参数都得不到.
回复 支持 反对

使用道具 举报

5

主题

165

帖子

165

积分

版主

Rank: 7Rank: 7Rank: 7

积分
165

热心会员突出贡献优秀版主荣誉管理

mongo 发表于 2016-8-30 17:00:36 | 显示全部楼层
但如果我在command line运行 python.exe 1.py aaa bbb ccc 的时候会打印
hello
['aaa', 'bbb', 'ccc']
这个你不是得到了么
回复 支持 反对

使用道具 举报

50

主题

1057

帖子

1108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1108

活跃会员热心会员最佳导师默默耕耘突出贡献优秀版主荣誉管理论坛元老

blueelwang 发表于 2016-8-30 17:40:21 | 显示全部楼层
如果前面不带python 的话, 实际上是调用隐含使用cmd命令调用1.py, 而windows会自动使用默认的程序打开对应扩展名的文件,所以这些参数是被cmd命令拿到了。 而并没有传递给python。 简单点说: cmd命令转发了这个命令执行, 但是参数并没有传递过去。
标准的执行方式就是前面加python, 在linux/unix/mac 下面也必须加python才能执行
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表