我在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*)
答案 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)
答案 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。