argv与raw_input的区别

1 投票
2 回答
5357 浏览
提问于 2025-04-17 06:56

我知道在使用 argv 的时候,我需要把文件名作为参数输入(比如说:python ex15.py ex15_sample.txt),而使用 raw_input 的时候,我是通过输入来提供文件名。

但是我就是搞不清楚,为什么用其中一种方式来获取文件名会比另一种更好。有人能解释一下原因吗?

2 个回答

2

作为命令行参数输入的一部分,用户可以提交系统调用,这可能会导致你的程序崩溃。比如,用户可以输入一个 ls 命令。系统会执行这个命令,而不管你的程序本来应该做什么。

7

这是因为如果交互式用户输入不是一个关键功能,通常应该避免使用。在你的例子中,从标准输入或命令行读取数据可以让你把不同的程序结合起来,并在脚本中运行它们。

想象一下,你执行了很多代码,然后坐在屏幕前等待输入请求的到来。难道不觉得在命令行上提前指定好所有相关信息,然后去泡一杯咖啡更好么?

你可以这样做:

  • 检查一下命令行参数的数量是否大于1
  • 如果是,就把第一个参数当作文件名使用
  • 如果不是,就询问用户。

这样可以为你的程序增加一个不错的功能:你可以选择在命令行上指定文件名,或者在交互模式下输入它。

试试这个:

try:
    fn = argv[1]

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

撰写回答