2016-05-22 23 views
0

私はプログラミングの新人です。私は技術的能力の欠如についてお詫び申し上げます。AttributeError: 'function'オブジェクトに 'save'属性がありません - Python PIL QRコードが保存されません

私はpythonでqrcodeジェネレータを作成しようとしていますが、ファイル名の上に数字を増やそうとするとこのエラーが発生します。

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' 
>>> 

これを修正する方法はありますか。

(私の完全なコードは下記を参照してください - それはまだ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

あなたは*コール* 'make_image'機能するのを忘れ:'イム= qr.make_image'は単純です'()'がありません。 –

+0

整数と文字列を連結することはできないので、 '" filename "+ count +" .png "'も問題になります。 'count'をそこにある文字列に変換するか、文字列の書式を使用してください:' "filename {}。png" .format(count) '。 –

答えて

2

エラーはここにある:im = qr.make_image。あなたはimにオブジェクトqrの関数make_imageを格納しています。 Pythonで関数を変数に格納できるので、これは有効な構文です。

したがって、関数make_imageを呼び出すのではなく、単にそれを格納しています。それはim = qr.make_image()である必要があります。

0

T. Claverieの答えを実装したら、文字列と整数を連結しているので、.save()に失敗する可能性があります。

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

がために:

は、次の行を変更しようとすることができます

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

しかしこれは別の問題です。 –

+0

ええ、私は気づいて、私のコードを実行した後には、ありがとう! (: –

+0

ありがとうMartijn!私は同意する、私の答えはコードの別のバグを解決するかもしれない:) – Yaron

関連する問題