Python有一个argc参数吗?

时间:2011-11-20 13:52:46

标签: python linux file-io error-handling arguments

我在C和C ++中编写了相同的程序(打开文本文件和显示内容)。现在我在Python中做同样的事情(在Linux机器上)。

在C程序中,我使用了代码:

if (argc != 2) {
    /* exit program */
}

问题:Python中用于检查参数数量的内容

#!/usr/bin/python
import sys
try:
    in_file = open(sys.argv[1], "r")
except:
    sys.exit("ERROR. Did you make a mistake in the spelling")
text = in_file.read()
print text
in_file.close()

当前输出:

./python names.txt = Displays text file (correct)
./python nam = error message: stated from the sys.ext line (correct)
./python = error message: stated from the sys.ext line (wrong: want it to be a
separate error message stating *no file name input*)

4 个答案:

答案 0 :(得分:107)

在python中,列表知道它的长度,因此您可以len(sys.argv)来获取argv中的元素数。

答案 1 :(得分:15)

我经常使用快速肮脏的技巧从命令行读取固定数量的参数:

[filename] = sys.argv[1:]

in_file = open(filename)   # Don't need the "r"

这会将一个参数赋值给filename,如果没有一个参数,则引发异常。

答案 2 :(得分:8)

你最好看一下argparse的参数解析。

http://docs.python.org/dev/library/argparse.html

让事情变得简单,不需要自己做重物。

答案 3 :(得分:0)

dir(sys)说没有。 len(sys.argv)有效,但在Python中,最好是请求宽恕而不是许可,所以

#!/usr/bin/python
import sys
try:
    in_file = open(sys.argv[1], "r")
except:
    sys.exit("ERROR. Can't read supplied filename.")
text = in_file.read()
print(text)
in_file.close()

工作得很好而且更短。

如果你要退出,那会更好:

#!/usr/bin/python
import sys
text = open(sys.argv[1], "r").read()
print(text)

我正在使用print(),所以它适用于2.7和Python 3。