从目录中拉出随机图像,编码到base64,然后打印

时间:2016-11-08 00:18:55

标签: python random base64 encode

我很难一起尝试将这两者结合起来。这让我很沮丧,所以我希望找到想法/解决方案。

完整的作品(我正在计划的)应该从在线目录中获取随机图像,将其编码为base64然后打印base64。我整天都疯狂地疯了,现在我转向蟒蛇。起!

这些只是当下的一些注释,但应该解释这个过程。

import random, os
import base64

def search(): #get file
    path = r"/Users/Impshum/Pictures" #should be able to http
    random_filename = random.choice([
        x for x in os.listdir(path)
        if os.path.isfile(os.path.join(path, x))
    ])
    print(random_filename) #not printing full location


def encode(): #encode to base64
    image = open('heaven.jpg', 'rb')
    image_read = image.read()
    image_64_encode = base64.encodestring(image_read)
    print image_64_encode

search() #notes
encode() #notes

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

您拥有所需的大部分代码

import random, os
import base64

def search(path): #get file
    random_filename = random.choice([
        x for x in os.listdir(path)
        if os.path.isfile(os.path.join(path, x))
    ])
    return os.path.join(path, random_filename)


def encode(path):
    image = open(path, 'rb')
    image_read = image.read()
    image.close()
    image_64_encode = base64.encodestring(image_read)
    return image_64_encode

print(encode(search(r"/Users/Impshum/Pictures")))

你可以采取一些措施使这个“更好”,但这应该让你开始。

例如,您可能希望使用glob而不是os.listdir / os.path.join等。并使用上下文管理器

import glob
import base64
import random

def search(path): #get file
    random_filename = random.choice(glob.glob(path))
    return random_filename


def encode(path):
    with open(path, 'rb') as image:
        image_read = image.read()
        image_64_encode = base64.encodestring(image_read)
        return image_64_encode

print(encode(search(r"/Users/Impshum/Pictures/*")))

错误处理留作OP的练习