u盘插入raspberrypi即可自动将图片转为pdf格式

    由于现在很多工作需要将图片转为pdf格式,但单位的电脑系统太老了,装不了pillow库(谁让我只会Python呢),只能退而求其次,充分发挥家里那块上了灰尘的树莓派了,原来已经装好系统了,现在只要安装pillow库,然后用Python编写个自动检测U盘并读取特定文件夹的图片并用pillow转换成pdf格式后存入U盘另一个特定文件夹,最后写个bash脚本放到开机启动项里边就好了。估计用到的Python库有psutil,shutil,os,time,pillow。ssh上树莓派(同一个局域网可以用nmap 192.168.0.* 扫描树莓派的IP,不确定网段的可以先用ifconfig查看网段), 经查除了psutil没有外其他的都有了,令人惊讶的是pillow库居然也安装了(其实linux系统都预装了该库)。用pip3 install psutil 安装,(平时不怎么用,懒得改python2.7了,直接用pip3吧,到时候也直接用python3)

先在有屏幕的电脑上编辑好.py程序。(vim编辑的话估计会很痛苦吧)

放上树莓派,开机自动转换成功,可重复插拔。

又想增加一个LED灯来提示运行状态,用到RPi.GPIO,树莓派本身就装有了。

全部代码如下,小白水平,不喜勿喷,欢迎点评。

```

from os import path,mkdir,system,listdir

from time import sleep

from PIL import Image

from psutil import disk_partitions

import RPi.GPIO as GPIO

#####################################################

for firstitem in disk_partitions(): #'检测并返回原来电脑盘数'

    if firstitem.device=='/dev/sdb1' or firstitem.device=='/dev/sda1': #‘排除开机时U盘就插在电脑上’

        firstnum=len(disk_partitions())-1

        break

    else:

        firstnum=len(disk_partitions())

num=firstnum     

disk_upan=''

directory1=''

directory2=''

######################################################

def finddevice():    #‘返回u盘路径’

    global firstnum,num

    global disk_upan

    for item in disk_partitions():

        disk_list=[]

        mount_list=[]

        disk_list.append(item.device)

        mount_list.append(item.mountpoint)

    if '/dev/sdb1' in disk_list or '/dev/sda1' in disk_list: 

        disk_upan=mount_list[-1]  #‘一般挂载在最后一个位置‘

        firstnum+=1    #'u盘没拔的话,下次就不用遍历这个函数了’

    else:

        disk_upan=""

        firstnum-=1      #‘u盘拔了的话,下次就不用遍历这个函数了’

##################################################################

def rwdirectorys(directorys):

    #'查看是否存在images-xu这个文件夹,如果不存在的话什么都不做'

    global directory1

    global directory2

    directory1=path.join(directorys,'images-xu')

    directory2=path.join(directorys,'pdf-xu')

    if path.exists(directory1) and path.isdir(directory1):

        if path.exists(directory2) and path.isdir(directory2):

            pass

        else:

            mkdir(directory2)  #‘创建pdf-xu这个文件夹用来保存转换后的pdf文件’

    else:

        #mkdir(directory1)  #'测试用,建了也没用'

        pass

###########################################################

def image2pdf():

    global directory1

    global directory2

    #检查images-xu里面的图片在pdf-xu里面有没有同名的,有同名和后缀名不符的就不转换

    fimagelist=listdir(directory1)

    pdflist=listdir(directory2)

    imagelist=[]

    extentlist=[]

    extname=['jpg','png']

    for j in range(len(pdflist)):

        pdflist[j]=path.splitext(pdflist[j])[0]

    for i in range(len(fimagelist)):

        imagelist.append(path.splitext(fimagelist[i])[0])

        extentlist.append(path.splitext(fimagelist[i])[1])

        if imagelist[i] in pdflist and extentlist[i] not in extname:

            imagelist[i]=''

            extentlist[i]=''

        else:

            continue

    new_imagelist=[x for x in imagelist if x != ""]

    new_extentlist=[y for y in extentlist if y != ""]


    #清空pdf-xu

    system(r'rm -rf directory2/*')

    #开始转换并保存到pdf-xu里面

    for k in range(len(new_imagelist)):

        dire=path.join(directory1,new_imagelist[k]+new_extentlist[k])

        targetdire=path.join(directory2,new_imagelist[k]+'.pdf')

        im=Image.open(dire)

        im.save(targetdire) 

########################################################################

def breatheled():

    GPIO.setmode(GPIO.BOARD)

    GPIO.setup(12,GPIO.OUT)

    p=GPIO.PWM(12,128)

    p.start(0)

    for dc in range(0,50,5):

        p.ChangeDutyCycle(dc)

        sleep(0.1)

    for dc in range(50,-1,-5):

        p.ChangeDutyCycle(dc)

        sleep(0.1)

    p.stop()

    GPIO.cleanup()

##########################################################

def openled():

    GPIO.setmode(GPIO.BOARD)

    GPIO.setup(12,GPIO.OUT)

    GPIO.output(12,GPIO.HIGH)

    sleep(2)

    GPIO.cleanup()

##################################################

def closeled():

    GPIO.setmode(GPIO.BOARD)

    GPIO.setup(12,GPIO.OUT)

    GPIO.output(12,GPIO.LOW)

    GPIO.cleanup()

############################################## 

def main():

    while True:

        if len(disk_partitions())==firstnum:  #‘如果没有插拔动作的话就什么都不执行’

            breatheled()

            sleep(1)    #让它有时间清除端口

            continue

        else:

            finddevice()

            if disk_upan=="":

                pass

            else:

                rwdirectorys(disk_upan)

                openled()

                sleep(1)            #让它有时间清除端口

                image2pdf()

                closeled()             

if __name__=='__main__':

    main()

```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容