Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python argv与原始输入_Python_Argv_Raw Input - Fatal编程技术网

Python argv与原始输入

Python argv与原始输入,python,argv,raw-input,Python,Argv,Raw Input,我知道当使用argv时,我必须将文件作为参数键入(例如:python ex15.py ex15_sample.txt),当使用raw_input时,我输入文件名作为输入 但我似乎不明白为什么一种获取文件名的方法比另一种更好。有人能解释一下原因吗?这是因为如果交互式用户输入不是一项关键功能,您通常应该避免使用它。在您的示例中:从stdin或命令行读取允许组合不同的程序并在脚本中运行它们,等等 想象一下,您执行了大量代码,坐在屏幕前等待输入请求的到来。在命令行中指定所有相关信息,然后去准备一杯咖啡,

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


但我似乎不明白为什么一种获取文件名的方法比另一种更好。有人能解释一下原因吗?

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

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

你能做的是:

  • 检查len(argv)>1
  • 如果是,请使用argv[1]作为文件名
  • 如果没有,请询问用户
这为您的程序添加了一个很好的功能:您可以在命令行上指定文件名,也可以在交互模式下输入文件名

试试这个:

try:
    fn = argv[1]

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

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

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

你能做的是:

  • 检查len(argv)>1
  • 如果是,请使用argv[1]作为文件名
  • 如果没有,请询问用户
这为您的程序添加了一个很好的功能:您可以在命令行上指定文件名,也可以在交互模式下输入文件名

试试这个:

try:
    fn = argv[1]

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

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

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

“我似乎不明白为什么一种获取文件名的方法比另一种更好。”?这就是问题所在吗?代码并不重要?你是在问交互和命令行之间的折衷吗?如果是这样的话,也许你可以删除代码,因为这对你的问题并不重要。“我似乎不明白为什么一种获取文件名的方法比另一种更好。”?这就是问题所在吗?代码并不重要?你是在问交互和命令行之间的折衷吗?如果是这样,也许你可以删除代码,因为这对你的问题并不重要。我从不使用命令行界面,即使我的脚本需要运行参数,因为我更喜欢直接在脚本上编写它们,然后直接从编辑器中运行。这样,“工作”版本将自动保存并可供重用或修改。但这纯粹是一个偏好的问题。想象一下,每当你想更改目录或复制文件时,你必须重新编译
cp
cd
。然后你发现你还必须重新编译
gcc
,因为这样你会发疯的:)@wal-o-mat非常感谢@wal-o-mat:这就是解释语言的美妙之处:没有编译时间!我喜欢Python。但我认识到我应该养成在脚本/程序中加入命令行参数的习惯。这是最佳实践。我从不使用命令行界面,即使我的脚本需要运行参数,因为我更喜欢直接在脚本上编写参数,然后直接从编辑器中运行。这样,“工作”版本将自动保存并可供重用或修改。但这纯粹是一个偏好的问题。想象一下,每当你想更改目录或复制文件时,你必须重新编译
cp
cd
。然后你发现你还必须重新编译
gcc
,因为这样你会发疯的:)@wal-o-mat非常感谢@wal-o-mat:这就是解释语言的美妙之处:没有编译时间!我喜欢Python。但我认识到我应该养成在脚本/程序中加入命令行参数的习惯。这是最佳做法。