[英]Check if sys.argv are defined inside a function
我想定义一个函数,该函数检查是否将任何argv赋予命令行,否则将打印一个字符串或返回两个字符串。 这是代码:
import sys
def get_input():
if len(sys.argv) > 1:
path_input_text = sys.argv[1]
path_basic_conf = sys.argv[2]
return path_input_text, path_basic_conf
elif len(sys.argv) == 1:
print "Takes at least two arguments"
else:
print "No arguments entered"
return 'file.txt', 'file.xml'
我试着这样调用函数:
a,b = get_input()
当我给出两个参数时,它可以工作,但在另两种情况下,即elif和else语句,它会失败。 我该如何运作? 我应该使用try / except语句吗? 谢谢
编辑1
当我只尝试1个参数时:
IndexError: list index out of range
当我尝试不使用参数时:
TypeError: 'NoneType' object is not iterable
在给定1个参数的情况下,我想引发一个错误,而不是返回None,None。
argv [0]是脚本名称(是否为完整路径名取决于操作系统)。 如果命令是使用解释器的-c命令行选项执行的,则argv [0]设置为字符串'-c'。 如果没有脚本名称传递给Python解释器,则argv [0]为空字符串。 (参考: https : //docs.python.org/2/library/sys.html )
尝试这个 :
import sys
def get_input():
if len(sys.argv) > 2:
#print (sys.argv[0])
path_input_text = sys.argv[1]
path_basic_conf = sys.argv[2]
return path_input_text, path_basic_conf
elif len(sys.argv) ==2:
#print (sys.argv[0])
print ("Takes at least two arguments")
return None,None
else:
#print (sys.argv[0])
print ("No arguments entered")
return 'file.txt', 'file.xml'
a,b = get_input()
print (a)
print (b)
输出:
D:\>python so.py 1
Takes at least two arguments
None
None
D:\>python so.py
No arguments entered
file.txt
file.xml
D:\>python so.py 1 2
1
2
在一种情况下,您什么也不返回,应该返回什么:例如,无。
elif len(sys.argv) ==1:
print "Takes at least two arguments"
应该:
elif len(sys.argv) ==1:
print "Takes at least two arguments"
return None,None
您的长度应从2开始而不是1
if len(sys.argv) > 2:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.