如何将条形码输出打印到文件中?

时间:2018-10-31 09:41:12

标签: python barcode

我为一个小项目设置了带有USB条码扫描器的树莓派。它可以处理我生成的条形码,并在终端中打印扫描代码的输出。我真的很想将此输入保存到一个不会覆盖自身的txt文件中。我试图更改所有功能,但我无法使其正常工作。我只是Python的新手,而且我在这方面已经停留了很长时间,并且已经遍及整个Internet。如果您只需将我指向代码中的特定位置,我需要进行更改以将输出打印出来,我将非常感激。

来源:Instructables

!/ usr / bin / python

    import sys
    import requests
    import json

    api_key = "" #https://upcdatabase.org/

    def barcode_reader():
        hid = {4: 'a', 5: 'b', 6: 'c', 7: 'd', 8: 'e', 9: 'f', 10: 'g', 11: 'h', 12: 'i', 13: 'j', 14: 'k', 15: 'l', 16: 'm',
              17: 'n', 18: 'o', 19: 'p', 20: 'q', 21: 'r', 22: 's', 23: 't', 24: 'u', 25: 'v', 26: 'w', 27: 'x', 28: 'y',
              29: 'z', 30: '1', 31: '2', 32: '3', 33: '4', 34: '5', 35: '6', 36: '7', 37: '8', 38: '9', 39: '0', 44: ' ',
              45: '-', 46: '=', 47: '[', 48: ']', 49: '\\', 51: ';', 52: '\'', 53: '~', 54: ',', 55: '.', 56: '/'}

        hid2 = {4: 'A', 5: 'B', 6: 'C', 7: 'D', 8: 'E', 9: 'F', 10: 'G', 11: 'H', 12: 'I', 13: 'J', 14: 'K', 15: 'L', 16: 'M',
               17: 'N', 18: 'O', 19: 'P', 20: 'Q', 21: 'R', 22: 'S', 23: 'T', 24: 'U', 25: 'V', 26: 'W', 27: 'X', 28: 'Y',
               29: 'Z', 30: '!', 31: '@', 32: '#', 33: '$', 34: '%', 35: '^', 36: '&', 37: '*', 38: '(', 39: ')', 44: ' ',
               45: '_', 46: '+', 47: '{', 48: '}', 49: '|', 51: ':', 52: '"', 53: '~', 54: '<', 55: '>', 56: '?'}

        fp = open('/dev/hidraw0', 'rb')

        ss = ""
        shift = False

        done = False

        while not done:

             ## Get the character from the HID
             buffer = fp.read(8)
             for c in buffer:
                if ord(c) > 0:

                  ##  40 is carriage return which signifies
                  ##  we are done looking for characters
                   if int(ord(c)) == 40:
                      done = True
                      break;

                  ##  If we are shifted then we have to
                  ##  use the hid2 characters.
                if shift:

                   ## If it is a '2' then it is the shift key
                    if int(ord(c)) == 2:
                    shift = True

                   ## if not a 2 then lookup the mapping
                      else:
                          ss += hid2[int(ord(c))]
                          shift = False

            ##  If we are not shifted then use
            ##  the hid characters

                else:

                    ## If it is a '2' then it is the shift key
                    if int(ord(c)) == 2:
                       shift = True

                    ## if not a 2 then lookup the mapping
                    else:
                        ss += hid[int(ord(c))]
        return ss


    def UPC_lookup(api_key,upc):
        '''V3 API'''

        url = "https://api.upcdatabase.org/product/%s/%s" % (upc, api_key)

        headers = {
        'cache-control': "no-cache",
        }

        response = requests.request("GET", url, headers=headers)

        print("-----" * 5)
        print(upc)
        print(json.dumps(response.json(), indent=2))
        print("-----" * 5 + "\n")

    if __name__ == '__main__':
        try:
           while True:
               UPC_lookup(api_key,barcode_reader())
        except KeyboardInterrupt:
            pass

1 个答案:

答案 0 :(得分:0)

如果已经在控制台上打印,则表示它来自代码的这一部分:

print("-----" * 5)
print(upc)
print(json.dumps(response.json(), indent=2))
print("-----" * 5 + "\n")

为了将其保存到文件中,可以使用以下命令:

with open('FILENAME.txt', 'a', encoding='utf-8') as file:
    file.write('CONTENT THAT YOU WANT TO WRITE!\n')

或者在您的特定情况下:

with open('FILENAME.txt', 'a', encoding='utf-8') as file:
    file.write("-----" * 5)
    file.write(upc)
    file.write(json.dumps(response.json(), indent=2))
    file.write("-----" * 5 + "\n")