在Python中使用for循环向列表中添加项

2024-09-27 21:33:18 发布

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

我的代码将实际文件类型与扩展名进行比较并返回结果。我不得不调整它以返回结果并重用其他函数,但我被卡住了,我不知道为什么我的脚本只将一个项目附加到列表中,并且不会产生任何错误。我会得到一个类似['asd', 'fgh', etc..]的结果。我做错了什么?你知道吗

import os, sys

sys.argv.append("C:/temp/ver_files/")
dirct = set(os.listdir(sys.argv[1]))

file_sigs = {
    b'\xff\xd8\xff': (
        '.jpg',
        '.jpeg',
        '.JPG',
        '.JPEG'
    ),
    b'\x47\x49\x46': (
        '.gif',
        '.GIF'
    ),
    b'\x89\x50\x4e': (
        '.png',
        '.PNG'
    ),
    b'\x50\x4b\x03': (
        '.docx',
        '.DOCX'
    ),
    b'\x42\x4d': (
        '.bmp',
        '.BMP'
    )
}

for i in dirct:
    inf = []
    file = open(sys.argv[1]+i, "rb")
    sig = file.read(3)
    file.close()
    ext = os.path.splitext(i)[1]
    if len(inf) >= 0:
        if sig in file_sigs.keys():
            if ext in file_sigs[sig]:
                inf.append('Matching extension: '+ ext+ ' for file: '+i)
            else:
                inf.append('No matching extension for file: '+i+" it's a "+ file_sigs[sig][0]+ ' file')
        else:
            inf.append('No such signature in database')

print(inf)

Tags: inforifossysextfileinf

热门问题