Python从标准输入读取数据的方法
Python从标准输入读取数据的方法
技术背景
在Python编程中,经常需要从标准输入(stdin)读取数据,比如在编写命令行工具、处理脚本输入或参与代码高尔夫挑战时。Python提供了多种方式来实现从标准输入读取数据,不同的方法适用于不同的场景。
实现步骤
使用fileinput
模块
1 |
|
fileinput
会遍历命令行参数指定的文件中的所有行,如果没有提供参数,则从标准输入读取。注意,line
会包含一个尾随的换行符,可使用line.rstrip()
去除。
使用sys.stdin
1 |
|
sys.stdin
是一个类似文件的对象,可以调用read
或readlines
函数来读取所有内容,或者将内容按换行符分割。
使用内置函数input()
(Python 3)或raw_input()
(Python 2)
1 |
|
这两个函数用于提示用户输入,input()
在Python 3中使用,raw_input()
在Python 2中使用。
使用open(0)
(Python 3)或io.open(0)
(Python 2)
1 |
|
在Python 3中,open
函数接受文件描述符,0 是标准输入的描述符。
使用open('/dev/stdin')
1 |
|
该方法在Python 2和3中都可用,但不适用于Windows系统。
核心代码
完整示例:使用sys.stdin
和input
1 |
|
处理命令行参数和标准输入
1 |
|
使用argparse
处理输入
1 |
|
最佳实践
- 对于简单的交互式输入:优先使用
input()
(Python 3)或raw_input()
(Python 2)。 - 对于处理大量数据或文件输入:使用
sys.stdin
或fileinput
模块。 - 在代码高尔夫场景中:可考虑使用
open(0)
或open('/dev/stdin')
。
常见问题
数据阻塞问题
使用for line in sys.stdin:
时,如果没有数据传入,程序会一直阻塞。可以使用select
模块来检查是否有数据:
1 |
|
Windows系统下的二进制数据读取问题
在Windows系统中,sys.stdin
默认以文本模式打开,读取二进制数据时会损坏\r\n
。可通过以下方式解决:
1 |
|
Python从标准输入读取数据的方法
https://119291.xyz/posts/python-read-from-stdin-methods/