2013-09-29 5 views
2

저는 상점의 판매 시점에서 CSV 내보내기를 처리하기 위해이 작은 스크립트를 만들었습니다. 바코드 스캐너에서 입력 한 바코드 목록이 필요합니다. 그런 다음 목록에서 해당 품목을 조회하여 실제 재고를 신속하게 확인하고 판매 시점 강조 표시를 확인합니다.파이썬 raw_input은 ENTER 대신 TAB을 사용합니까?

작동 원리 ... 내가 궁금한 점은 raw_input을 기본 입력에서 바꾸고 Tab 키로 바꿀 수 있다는 것입니다.

내 바코드 스캐너는 바코드를 스캔 한 후 (키보드의 POS에서 요구하는대로) Tab을 사용하도록 프로그래밍되어있어 항목을 스캔하는 동안 키보드를 직접 조작하지 않아도됩니다.

가능합니까?

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()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)) 
+0

당신은 countlist하는 바코드에서 한 문자를 추가하는 대신 전체 바코드를 추가. –

+0

@ ansh0l :이 코드는 설명의 대상이되었습니다. –