python关于sys.argv的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python关于sys.argv的使用相关的知识,希望对你有一定的参考价值。

#!/usr/bin/env python
import socket,sys
port = 70
host = sys.argv[1]
filename = sys.argv[2]
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((host,port))
s.sendall(filename + "\r\n")
while 1:
buf = s.recv(2048)
if not len(but):
break
sys.stdout.write(buf)

以上程序中的sys.argv[1]和sys.argv[2]用来做什么啊,为什么不能通过测试:
IndexError: list index out of range

1.sys.argv是用来存放系统的参数,包括脚本名本身。
2.你这么直接使用sys.argv[1]和sys.argv[2],是很不好的做法。

3. 正常,且推荐的用法是,使用对应的库函数,帮你解析对应函数参数。
详细解释可参考我的:
【整理】Python中如何获得并处理命令行参数
里面有示例代码。
4.看了上面的帖子,还要你去看:
【整理】【多图详解】如何在Windows下开发Python:在cmd下运行Python脚本,如何使用Python Shell(command line模式和GUI模式),如何使用Python IDE
然后就懂了,对于你这里,执行脚本时需要输入参数的。
5。由于你这里用wing ide没有输入参数,所以才会出现

list index out of range
的错误的。

上面帖子都看完,就自然懂了。

(此处不给贴地址,请自己用google搜标题,就可以找到地址了)
参考技术A sys.argv是你接收的参数的列表 []
比如你这段代码名字叫做test.py
运行python test.py 192.168.0.1 test.txt
sys.argv[0] ----test.py
sys.argv[1] ----192.168.0.1

sys.argv[2] ----test.txt

你可以print试试
你要用wing 直接运行 就需要设置一下 在运行设置里面加上命令
参考技术B sys.argv保存了你加的系统参数
你的程序需要这样调用
c:/> python test.py 参数1 参数2 参数3追问

参数1 参数2 参数3是指的是什么啊。我的程序是写在wing IDE里面的,直接点运行报错。

追答

所以你不能直接点运行,你需要加参数

比如这样:

来自:求助得到的回答
参考技术B 好像是用来传文件的东东。命令行的参数1好像是地址,参数2应该是文件名

python使用笔记:sys.argv[]的使用

sys.argv[]用于获取传入的参数
sys.argv[0]是py文件本身

比如例程

import sys
a=sys.argv[0]
b=sys.argv[1]
print(a)
print(b)
print(sys.argv[2])

执行结果:

以上是关于python关于sys.argv的使用的主要内容,如果未能解决你的问题,请参考以下文章

python中sys.argv的说明(读《python简明教程》的困惑解答)

Python sys 模块

第二天的关于学习的python

Python sys模块

关于argparse库的个人学习

python专题sys模块