如何在csv文件中写入文件,其中一列为字符串,另一列为字节

时间:2018-09-24 22:59:03

标签: python

我写了一个将.jpg图像转换为base64的程序。现在,我想将这些写在一个csv文件中。因此,一列具有文件名(字符串),另一列具有转换后的图像(字节)。我该如何实现。到目前为止,我已经编写了以下代码。

from PIL import Image
import os
import base64
import csv

def main():
    array=[]
    pic_name=[]
    #opens file in listed directory
    for f in os.listdir('./jpg_Images'):
        if f.endswith('.jpg'):
            #making a list of a filename
            pic_name.append(f)
            #joining the path
            xpath = os.path.join ('./jpg_Images',f)
            #open .jpg file in Binary mode
            image = open(xpath, 'rb')
            #open binary file in read mode
            image_read = image.read()
            #encode the image
            image_64_encode = base64.encodebytes(image_read)
            #making the list of encoded image
            array.append(image_64_encode)

    with open('convert.csv', 'w') as f:
        writer = csv.writer(f)
        writer.writerows(zip(array, pic_name))
    f.close()


if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:1)

幸运的是,可以将base64编码的字节字符串解码为unicode,而不会损失保真度。 base64解码为ASCI范围内的可打印(和非转义)字符。只需更改行即可:

array.append(image_64_encode)

收件人:

array.append(image_64_encode.decode())