argv与raw_input

时间:2011-11-23 17:53:27

标签: python argv raw-input

我知道在使用argv时我必须输入文件作为参数(例如:python ex15.py ex15_sample.txt),当使用raw_input时,我输入文件名作为输入。

但我似乎无法找出为什么获取文件名的方法会比另一种更好。有人可以解释原因吗?

2 个答案:

答案 0 :(得分:6)

这是因为如果它不是关键功能,你通常应该避免交互式用户输入。在您的示例中:从stdin或命令行读取允许组合不同的程序并在脚本中运行它们等等。

想象一下,您执行了大量代码并坐在屏幕前等待输入请求到来。在命令行中指定所有相关信息并准备一杯咖啡不是更好吗?

你能做什么:

  • 检查len(argv)> 1
  • 如果是,请使用argv [1]作为文件名
  • 如果没有,请询​​问用户。

这为您的程序添加了一个很好的功能:您可以在命令行中指定文件名,也可以以交互模式输入文件名。

试试这个:

try:
    fn = argv[1]

except IndexError:
    fn = raw_input("filename > ")

答案 1 :(得分:2)

作为命令行参数输入的一部分,用户可以提交系统调用,这可能会导致程序崩溃。例如。用户可以发出ls命令。无论你的程序应该做什么,系统都会执行该命令。