【问题标题】:Python raw_input use TAB instead of ENTER?Python raw_input 使用 TAB 而不是 ENTER?
【发布时间】:2026-01-17 04:10:02
【问题描述】:

我制作了这个小脚本来处理我商店销售点的 CSV 导出。它需要我们的条码扫描仪输入的条码列表。然后在列表中查找这些项目,以根据我们的销售点声明快速检查我们的实际库存。

它有效...我很好奇是否可以将 raw_input 从它默认使用的 ENTER 更改为 TAB?

我的条码扫描器被编程为在扫描条码后使用 TAB(正如我们的 POS 要求的那样),这样在扫描物品时不必手动操作键盘非常方便。

有可能吗?

import csv

inv = csv.reader(open('onhand.tab', 'rU'), dialect='excel-tab', delimiter="\t")

invarray = []
countlist = []

for row in inv:
    invarray.append(row)

print "Input barcode followed by <ENTER>. When finished, 'x' followed by <ENTER>"
while True:
    bb = raw_input('> ')
    countlist.append(bb)
    if bb == 'x':
        break

print "\n" * 100
print "+" + "-" * 130 + "+"

for row in invarray:
    barcode = row[0]
    prod_name = row[8]
    main = row[4]
    vb = row[12]
    oo = row[6]
    toh = row[9]
    mnum = row[5]

    for row in countlist:
        bc = row[0]
        if bc == barcode:
            print ('|%-15s\t%-100s\t%-3s|') % (barcode, prod_name, main)
            print "+" + "-" * 130 + "+"

【问题讨论】:

    标签: python python-2.7 tabs enter raw-input


    【解决方案1】:

    你不能; raw_input() 仅在输入 ENTER 时返回控制权。

    改为直接从sys.stdin 读取:

    barcode = []
    while True:
        char = sys.stdin.read(1)  # read 1 character from stdin
        if char == '\t':  # if a tab was read
            break
        barcode.append(char)
    countlist.append(''.join(barcode))
    

    【讨论】:

    • 您将条码中的单个字符附加到计数列表,而不是将条码作为一个整体添加。