使用 python 进行输入重定向
Input redirection with python
我有以下程序来测试 Python 中的输入重定向。
a = int(raw_input("Enter a number: "))
b = raw_input("Enter a string: ")
print "number entered = ", a
print "string entered = ", b
如果我运行这个程序没有重定向,输入输出如下图:
Enter a number: 100
Enter a string: sample
number entered = 100
string entered = sample
现在,为了测试输入重定向,我有一个名为 a.txt 的文件,其中包含:
100
sample
但是,当我 运行 从 a.txt 重定向输入时(如下所示),我的输入和输出会出现乱码。
python doubt02.py < a.txt
Enter a number: Enter a string: number entered = 100
string entered = sample
请建议我是否有更好的替代方法来查看(使用输入重定向)如下:
Enter a number: 100
Enter a string: sample
number entered = 100
string entered = sample
您本质上是想将标准输入转换为标准输出:
import sys
class Tee(object):
def __init__(self, input_handle, output_handle):
self.input = input_handle
self.output = output_handle
def readline(self):
result = self.input.readline()
self.output.write(result)
return result
if __name__ == '__main__':
if not sys.stdin.isatty():
sys.stdin = Tee(input_handle=sys.stdin, output_handle=sys.stdout)
a = raw_input('Type something: ')
b = raw_input('Type something else: ')
print 'You typed', repr(a), 'and', repr(b)
Tee
class 仅实现 raw_input
使用的内容,因此不能保证它适用于 sys.stdin
.
的其他用途
我有以下程序来测试 Python 中的输入重定向。
a = int(raw_input("Enter a number: "))
b = raw_input("Enter a string: ")
print "number entered = ", a
print "string entered = ", b
如果我运行这个程序没有重定向,输入输出如下图:
Enter a number: 100
Enter a string: sample
number entered = 100
string entered = sample
现在,为了测试输入重定向,我有一个名为 a.txt 的文件,其中包含:
100
sample
但是,当我 运行 从 a.txt 重定向输入时(如下所示),我的输入和输出会出现乱码。
python doubt02.py < a.txt
Enter a number: Enter a string: number entered = 100
string entered = sample
请建议我是否有更好的替代方法来查看(使用输入重定向)如下:
Enter a number: 100
Enter a string: sample
number entered = 100
string entered = sample
您本质上是想将标准输入转换为标准输出:
import sys
class Tee(object):
def __init__(self, input_handle, output_handle):
self.input = input_handle
self.output = output_handle
def readline(self):
result = self.input.readline()
self.output.write(result)
return result
if __name__ == '__main__':
if not sys.stdin.isatty():
sys.stdin = Tee(input_handle=sys.stdin, output_handle=sys.stdout)
a = raw_input('Type something: ')
b = raw_input('Type something else: ')
print 'You typed', repr(a), 'and', repr(b)
Tee
class 仅实现 raw_input
使用的内容,因此不能保证它适用于 sys.stdin
.