繁体   English   中英

检查sys.argv是否在函数内定义

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM