我有以下程序来测试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
Blender.. 6
你基本上想要stdin进入stdout:
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
类只实现什么raw_input
用,所以它不能保证对其他用途的工作sys.stdin
.
你基本上想要stdin进入stdout:
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
类只实现什么raw_input
用,所以它不能保证对其他用途的工作sys.stdin
.