我知道在使用argv
时我必须输入文件作为参数(例如:python ex15.py ex15_sample.txt
),当使用raw_input
时,我输入文件名作为输入。
但我似乎无法找出为什么获取文件名的方法会比另一种更好。有人可以解释原因吗?
答案 0 :(得分:6)
这是因为如果它不是关键功能,你通常应该避免交互式用户输入。在您的示例中:从stdin或命令行读取允许组合不同的程序并在脚本中运行它们等等。
想象一下,您执行了大量代码并坐在屏幕前等待输入请求到来。在命令行中指定所有相关信息并准备一杯咖啡不是更好吗?
你能做什么:
这为您的程序添加了一个很好的功能:您可以在命令行中指定文件名,也可以以交互模式输入文件名。
试试这个:
try:
fn = argv[1]
except IndexError:
fn = raw_input("filename > ")
答案 1 :(得分:2)
作为命令行参数输入的一部分,用户可以提交系统调用,这可能会导致程序崩溃。例如。用户可以发出ls命令。无论你的程序应该做什么,系统都会执行该命令。