【发布时间】:2014-08-07 19:20:15
【问题描述】:
操作系统是 Windows 7 x64(运行 Python x86),但代码需要可导出到 Windows XP 和 Ubuntu Linux。
这部分问题可能是特定于 Windows 7 x64 的。
我正在使用与 HID 键盘兼容的 USB 条形码扫描仪。
我在我的keyboard.py文件所在的文件夹中打开一个命令提示符并执行它。
第一次运行完美,退出,OK。
当我在同一个窗口中重新运行时,扫描仪数据似乎已缓冲,并且在进行新扫描时不再更改。
我尝试使用以下方法关闭代码:
.flush() .readline() and .read() all to no avail. Is this a flaw in Win7 or am I missing something.
代码:
import sys
x = ''
oStr = ''
#while x != 'exit':
while True:
x = sys.stdin.read(1)
if (x.find('\n') != -1) or (x.find('\04') != -1):
break
oStr = oStr + x
print 'Output String: ' + oStr #+ '\n'
Output:
D:\Python 项目\键盘输入>keyboard.py [)>0617V33SR41P12973001S10515725 输出字符串:[)>0617V33SR41P12973001S10515725
D:\Python 项目\键盘输入>keyboard.py [)>0617V33SR41P12973001S10515725
如图所示,第二次运行停止。但是,第二次扫描以 23 而不是 25 结束!
如果我按 Enter 脚本完成。进一步的扫描是相同的。
【问题讨论】:
-
尝试 sys.stdin.readline().strip() 而不是自己解析标准输入。我认为这应该会给你你正在寻找的结果。
标签: python windows keyboard stdin