类型错误和属性对象

2024-10-03 23:29:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我在网上找了很多方法,但还是解决不了。我是python的初学者。请帮我看看。你知道吗

import hashlib
import time
import traceback
import win32api
import win32clipboard as clip
from io import BytesIO
import win32con
from PIL import Image


def setImage(data):
    m = hashlib.md5()
    try:
        clip.OpenClipboard()  
        clip.EmptyClipboard()  
        clip.SetClipboardData(win32con.CF_DIB, data) 
        m.update(clip.GetClipboardData(win32con.CF_DIB))
        clip.CloseClipboard()
        return m.hexdigest()
    except:
        traceback.print_exc()
        setImage(data)

def copyPicMain(imagePath, width = 600, height = 480, internal=0,    
 notResize = False):
    m = hashlib.md5()
    try:
        clip.OpenClipboard()
        m.update(clip.GetClipboardData(win32con.CF_DIB))
        clip.CloseClipboard()
        pre_md5 = m.hexdigest()
    except TypeError:
        # if clip is empty
        traceback.print_exc()
        print('empty')
        pre_md5 = ''
    except:
        traceback.print_exc()
        clip.OpenClipboard()
        m.update(clip.GetClipboardData(win32con.CF_DIB))
        clip.CloseClipboard()
        pre_md5 = m.hexdigest()
    img = Image.open(imagePath)
    output = BytesIO()
    if not notResize:
        img = img.resize((height, width), Image.BILINEAR)
    img.convert("RGB").save(output, "BMP")
    data = output.getvalue()[14:]
    output.close()
    new_md5 = setImage(data)
    print(pre_md5, new_md5)
    time.sleep(internal)
    win32api.keybd_event(win32con.VK_CONTROL, 0, 0, 0)  # ctrl key code 17
    win32api.keybd_event(86, 0, 0, 0)  # v key code 86
    win32api.keybd_event(86, 0, win32con.KEYEVENTF_KEYUP, 0)  # key up 
    time.sleep(internal)

if __name__ == '__main__':
    imagePathList =    [r'C:\Users\strives\Desktop\panda.png',r'C:\Users\strives\Desktop\black.png',r'C:\Users\strives\Desktop\1.png']
for imagePath in imagePathList:
    copyPicMain(imagePath)

调试结果:

C:\Users\Straives>;python C:\Users\Straives\Desktop\测试.py 回溯(最近一次呼叫):

文件“C:\Users\Straives\Desktop\测试.py,第28行,在copyPicMain中 m、 更新(clip.GetClipboardData文件(win32)连续CF\u DIB))你知道吗

类型错误:指定的剪贴板格式不可用

空的

回溯(最近一次呼叫):

文件“C:\Users\strives\AppData\Local\Programs\Python\Python37-32\lib\site-

包\PIL\图片.py,第2656行,打开fp.seek查找(0个)

AttributeError:'list'对象没有属性'seek'

在处理上述异常时,发生了另一个异常:

回溯(最近一次呼叫):

文件“C:\Users\Straives\Desktop\测试.py“,第60行,in copyPicMain(图像路径列表)

文件“C:\Users\Straives\Desktop\测试.py,第42行,在copyPicMain中 img=Image.open打开(图像路径)

文件“C:\Users\strives\AppData\Local\Programs\Python\Python37-32\lib\site packages\PIL\图片.py,第2658行,在打开的fp=拜特西奥(fp.read读取())

AttributeError:'list'对象没有属性'read'

编辑

我重新编译了它,出现了以下错误。你知道吗

C:\Users\Straives>;python C:\Users\Straives\Desktop\测试.py你知道吗

cfdb447aa6b20d45ba79b5802a677454 1aa0384b01ed1e2ecd6158c52a1355a5 1AA0384B01ED1EE2ECD6158C52A1355A5C28F8947D15EDB17752EC5F503A1B82B

回溯(最近一次呼叫最后一次):

文件“C:\Users\Straives\Desktop\测试.py,第27行,在copyPicMain中 clip.OpenClipboard打开剪贴板()

你知道吗pywintypes.error错误:(5,'OpenClipboard','访问被拒绝') c28f8947d15edb17752ec5f503a1b82b cfdb447aa6b20d45ba79b5802a677454型


Tags: 文件pyimportdataclipusersmd5cf
1条回答
网友
1楼 · 发布于 2024-10-03 23:29:21

你犯了个错误

                     for imagePath in imagePathList:
                          copyPicMain(imagePathList)

应将imagePath作为参数而不是完整列表发送,如:

                     for imagePath in imagePathList:
                          copyPicMain(imagePath)

希望有帮助:)

相关问题 更多 >