argv与raw_input的区别
我知道在使用 argv
的时候,我需要把文件名作为参数输入(比如说:python ex15.py ex15_sample.txt
),而使用 raw_input
的时候,我是通过输入来提供文件名。
但是我就是搞不清楚,为什么用其中一种方式来获取文件名会比另一种更好。有人能解释一下原因吗?
2 个回答
2
作为命令行参数输入的一部分,用户可以提交系统调用,这可能会导致你的程序崩溃。比如,用户可以输入一个 ls 命令。系统会执行这个命令,而不管你的程序本来应该做什么。
7
这是因为如果交互式用户输入不是一个关键功能,通常应该避免使用。在你的例子中,从标准输入或命令行读取数据可以让你把不同的程序结合起来,并在脚本中运行它们。
想象一下,你执行了很多代码,然后坐在屏幕前等待输入请求的到来。难道不觉得在命令行上提前指定好所有相关信息,然后去泡一杯咖啡更好么?
你可以这样做:
- 检查一下命令行参数的数量是否大于1
- 如果是,就把第一个参数当作文件名使用
- 如果不是,就询问用户。
这样可以为你的程序增加一个不错的功能:你可以选择在命令行上指定文件名,或者在交互模式下输入它。
试试这个:
try:
fn = argv[1]
except IndexError:
fn = raw_input("filename > ")