我有一些解析脚本,它们接受来自文件或 stdin 的输入,并使用 pandas read_csv
解析它们,它采用类似文件的对象作为输入。
这适用于文件,但如果我使用 stdin
作为输入,似乎标题行会在第一次尝试 read_csv
时被“消耗”。
我想知道是否有办法缓冲这一行,或者重置stdin
以再次尝试解析,以pandas喜欢的方式。
不确定示例代码是否有帮助,但是:
if Opt.Args:
FileName = Opt.Args[0]
print >> sys.stderr, "READING from FILE",FileName
elif not sys.stdin.isatty():
print >> sys.stderr, "READING from STDIN"
FileName = sys.stdin
try:
df = pd.read_csv(FileName,header=0,sep="\t", parse_dates=['RecordedDate'])
except ValueError:
try:
df = pd.read_csv(FileName,header=0,sep="\t",parse_dates=['RecordedDate_10'])
...etc...
最佳答案
没有一种完美的方法来“重置”标准输入,至少没有一种可以跨不同操作系统工作。不过,您可以尝试“重新绑定(bind)”STDIN,它实际上会清除它。
on unixoid systems, something like this could work:
import sys
text = sys.stdin.read()
sys.stdin = open("/dev/tty") sel = raw_input("Selection? : ")
引用:http://www.gossamer-threads.com/lists/python/python/467361
关于python - 在Python中重置或重新读取stdin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36488278/