1

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

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

4

2 回答 2

7

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

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

你可以做什么:

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

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

尝试这个:

try:
    fn = argv[1]

except IndexError:
    fn = raw_input("filename > ")
于 2011-11-23T17:59:29.080 回答
2

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

于 2012-03-01T22:39:25.213 回答