📜  Python|接受脚本输入

📅  最后修改于: 2022-05-13 01:55:03.547000             🧑  作者: Mango

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 辅助方法在输出中获取一些额外信息。