我有一个python脚本,我正在终端中执行。python脚本在后台执行一些操作,然后(使用原始输入)等待按下“enter”键,然后继续。你知道吗
为了简单起见,假设python脚本如下所示:
import sys
print 'PRESS ENTER'
a = raw_input()
print 'you wrote %s' %sys.argv[1]
print 'done'
为了在许多不同的变量上执行此脚本,我执行了以下操作:
macbookpro2:~$ echo '1
2
3
4
5
6
7
8
9' |while read line; do python test.py $line; done
PRESS ENTER
you wrote 1
done
它并没有遍历所有的数字,而且原始的输入似乎是在我没有采取任何行动的情况下为我按下的。。。你知道吗
在另一个方法中,每个方法都需要我的enter键,并正确执行:
macbookpro2:1 2 3 4 5 6 7 8 9中i的~$测试.py$i;完成 按回车键
you wrote 1
done
PRESS ENTER
you wrote 2
done
PRESS ENTER
you wrote 3
done
PRESS ENTER
you wrote 4
done
PRESS ENTER
you wrote 5
done
PRESS ENTER
you wrote 6
done
PRESS ENTER
you wrote 7
done
PRESS ENTER
you wrote 8
done
PRESS ENTER
you wrote 9
done
有人知道为什么会这样吗?你知道吗
raw_input
读取标准输入。在您的测试中,该输入是从运行脚本的循环继承的,因此它也从echo
语句而不是键盘读取。另外,Python默认情况下使用缓冲输入;即使只有raw_input
返回一行输入,Python仍将循环的其余输入读入内部缓冲区,以防再次调用raw_input
。下次调用read
时,就没有什么可读的了。你知道吗通过使用
-u
选项关闭缓冲,可以得到不同的结果:现在,
raw_input
仍在读取与read
相同的输入“文件”,但保证只读取它将返回的一行。因此奇数由read
命令读取,偶数服务器由Python脚本提示“ENTER”。要查看通过管道传输到循环中的每个数字,请为Python提供自己的标准输入:相关问题 更多 >
编程相关推荐