2016-05-22 4 views
0

Ich bin ein Neuling in der Programmierung, so entschuldige ich mich für meinen Mangel an technischen Fähigkeiten.AttributError: 'Funktion' Objekt hat kein Attribut 'Speichern' - Python PIL QR Code nicht speichern

Ich versuche, einen Qrcode-Generator in Python zu erstellen, aber wenn ich versuche, die Zahl auf den Dateinamen zu erhöhen, erhalte ich diesen Fehler.

Traceback (most recent call last): 
    File "/home/sam/Desktop/QR Code Gen/run.py", line 52, in <module> 
    purchase_code_fn() 
    File "/home/sam/Desktop/QR Code Gen/run.py", line 32, in purchase_code_fn 
    qr_code_fn() 
    File "/home/sam/Desktop/QR Code Gen/run.py", line 41, in qr_code_fn 
    im.save("filename"+ count + ".png") 
AttributeError: 'function' object has no attribute 'save' 
>>> 

Gibt es trotzdem eine Korrektur?

(unten für meinen vollständigen Code sehen - es ist immer noch ein WIP)

from qrcode import * 
import csv 
import time 


active_csv = csv.writer(open("active_codes.csv", "wb")) 
void_csv = csv.writer(open("void_codes.csv", "wb")) 

active_csv.writerow([ 
    ('product_id'), 
    ('code_id'), 
    ('customer_name'), 
    ('customer_email'), 
    ('date_purchased'), 
    ('date_expiry')]) 

void_csv.writerow([ 
    ('code_id'), 
    ('customer_email'), 
    ('date_expiry')]) 




count = 0 

def purchase_code_fn(): 
        global count 
        count =+ 1 
        customer_email = raw_input("Please enter your email: ") 
        product_id = raw_input("Which product would you like (1 - 5): ") 
        qr_code_fn() 


def qr_code_fn(): 
        qr = QRCode(version=5, error_correction=ERROR_CORRECT_M) 
        qr.add_data("asaasasa") 
        qr.make() # Generate the QRCode itself 
        # im contains a PIL.Image.Image object 
        im = qr.make_image 
        im.save("filename"+ count + ".png") 

def restart_fn(): 
        restart_prompt = raw_input("Would you like to purchase another code? : ").lower() 
        if restart_prompt == "yes" or restart_prompt == "y": 
         purchase_code_fn() 

        elif restart_prompt =="n" or restart_prompt == "no": 
         print("exit") 


purchase_code_fn() 
+1

Sie zu vergessen * * Aufruf der 'make_image' Funktion:' im = qr.make_image' ist einfach fehlt das '()'. –

+0

Beachten Sie, dass Sie nicht nur eine Ganzzahl und eine Zeichenkette verketten können, so dass "filename" + count + ".png" 'ebenfalls problematisch ist. Konvertieren Sie 'count' in eine Zeichenkette oder verwenden Sie eine Zeichenkettenformatierung:' "filename {}. Png" .format (count) '. –

Antwort

2

Der Fehler ist hier: im = qr.make_image. Sie speichern in im die Funktion make_image des Objekts qr. Da Sie in Python Funktionen in Variablen speichern können, ist dies eine gültige Syntax.

Sie rufen also nicht die Funktion make_image auf, speichern Sie sie einfach. Es sollte im = qr.make_image() sein.

0

Nachdem Sie T. Claverie Antwort implementieren - es ist wahrscheinlich, dass Sie in .Save() fehlschlagen, da Sie String und Integer verketten.

können Sie versuchen, die folgende Zeile zu ändern:

im.save("filename"+ count + ".png") 

zu sein:

im.save("filename"+ str(count) + ".png") 
+1

Dies ist jedoch ein anderes Problem. –

+0

Ja, ich habe es bemerkt und behoben, nachdem mein Code lief, danke aber! (: –

+0

Danke Martijn! Ich stimme zu, meine Antwort könnte einen weiteren Fehler im Code lösen ... :) – Yaron

Verwandte Themen