2013-09-29 46 views
2

我已經制作了這個小腳本來處理我商店銷售點的CSV導出。它採用我們的條形碼掃描器輸入的條形碼列表。然後在列表中查找這些項目,以快速檢查我們的銷售點聲稱的實際庫存。python raw_input使用TAB而不是ENTER?

它的工作原理......我很好奇的是,如果我可以改變它的默認使用ENTER的raw_input並將其替換爲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 + "+" 

回答

2

你不能; raw_input()只在輸入時才返回控制。

直接從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)) 
+0

你是從條形碼附加單個字符來countlist,而不是添加條形碼作爲一個整體。 –

+0

@ ansh0l:該代碼旨在說明。 –