Python|接受脚本输入
很多人使用Python作为 shell 脚本的替代品,使用它来自动执行常见的系统任务,例如操作文件、配置系统等。本文旨在描述通过重定向、管道或输入文件接受脚本输入。
问题 -让脚本能够使用对用户来说最简单的任何机制来接受输入。这应该包括从命令到脚本的管道输出,将文件重定向到脚本,或者只是将文件名或文件名列表传递给命令行上的脚本。
如果脚本看起来像这样,Python 的内置文件输入模块使这变得非常简单和简洁。
代码#1:
import fileinput
with fileinput.input() as f_input:
for line in f_input:
print(line, end ='')
然后可以通过前面提到的所有方式接受对脚本的输入。如果脚本已保存并使其可执行,则可以使用以下所有方法获得预期的输出:
代码#2:
# Prints a directory listing to stdout.
$ ls | ./filein.py
# Reads/etc/passwd to stdout.
$ ./filein.py/etc/passwd
# Reads/etc/passwd to stdout.
$ ./filein.py < /etc/passwd
fileinput.input()函数创建并返回FileInput类的一个实例。除了包含一些方便的辅助方法外,该实例还可以用作上下文管理器。因此,将所有这些放在一起,如果一个脚本希望同时打印多个文件的输出,则可能会在输出中包含文件名和行号,如下面的代码所示 -
代码#3:
import fileinput
with fileinput.input('/etc/passwd') as f:
for line in f:
print(f.filename(), f.lineno(), line, end ='')
/etc/passwd1
/etc/passwd2
/etc/passwd3
将其用作上下文管理器可确保在不再使用文件时关闭文件,并且可以在此处利用一些方便的 FileInput 辅助方法在输出中获取一些额外信息。