• python学习笔记番外:linux文件拷贝程序


    python学习笔记番外:linux文件拷贝程序

    为什么写这个程序

    之前有说过,为了给亲戚从某视频网站批量下载视频我用python写了一个爬虫,经历一番波折后我成功把爬虫布到了家里的树莓派上,然后花了两天两夜从网上下了100G左右的视频,这时候又有一个问题,需要从树莓派连接的移动硬盘把数据转移到我亲戚的移动硬盘,一开始我是把亲戚的移动硬盘连到笔记本上,通过树莓派的smba共享访问然后拷贝,结果发现巨慢,无奈之下只能把亲戚的移动硬盘接到树莓派上,但是用啥方式拷贝呢,shell命令也不是不可以,但一来我这半桶水,这么多批量文件,出现个啥问题真不好排查,二来这两天python写的还算顺手,不如就当练习文件操作了,于是就有了这个python小程序。

    • 需要爬虫或者想了解以下的可以阅读我的这篇博文

    • 想了解如何在树莓派安装python3的可以阅读我这篇博文

    程序本体

    import os
    import shutil
    import sys
    
    
    def copyDir(orignalDir, destDir):
        if not os.path.exists(destDir):
            os.mkdir(destDir)
        # 获取原目录下的文件和目录,进行复制
        orignalDirList = os.listdir(orignalDir)
        if len(orignalDirList) > 0:
            for orignalSubDirName in orignalDirList:
                orignalSubDir = orignalDir+"/"+orignalSubDirName
                if os.path.isdir(orignalSubDir):
                    copyDir(orignalSubDir, destDir+"/"+orignalSubDirName)
                else:
                    # 文件直接复制
                    copyFile(orignalSubDir, destDir+"/"+orignalSubDirName)
    
    
    def copyFile(orignalFile, destFile):
        if not os.path.exists(destFile):
            sys.stdout.write("开始复制文件"+orignalFile+"到"+destFile+"
    ")
            #如果遇到文件输出error,跳过
            try:
                shutil.copy(orignalFile, destFile)
            except:
                sys.stdout.write("文件"+destFile+"复制出错,跳过
    ")
        else:
            sys.stdout.write("已跳过文件"+orignalFile+"
    ")
    
    
    orignalDir = "/home/pi/NewmanDisk/haokan"
    destDir = "/media/pi/新加卷/围棋教学资源/好看视频"
    copyDir(orignalDir, destDir)
    sys.stdout.write("复制完毕
    ")
    

    程序本身很简单,无非就是读取当前目录下的文件和子目录,文件的话直接拷贝,子目录的话就递归调用。

    程序缺陷

    拷贝过程中遇到input/output error报错,所以有了try/catch,但是对错误处理的相当草率,更合理的方式是将错误输出到一个文件中记录,因为这里是联手性质的一次性程序,所以没有做改进。

    本篇文章首发自魔芋红茶的博客https://www.cnblogs.com/Moon-Face/ 请尊重其他人的劳动成功,转载请注明。
  • 相关阅读:
    【数据结构】算法 Invert Binary Tree 翻转二叉树
    雪碧图
    闭包
    正则那些事
    JS添加,删除表格中的行那些事
    三目运算
    10个不能重复的随机数要求为55-109的整数, 要将10个随机数打印出来,并且将10个随机数里面能够被5整除的数打印出来,最后将能够被5整除的数叠加的结果打印出来
    输出从小到大排序好的五个不重复的随机整数,范围[10-23)。努力的人全世界都为你让路!你的努力终将美好!
    随机取10个在55-80之间的数,按照从小到大排序输出,冒泡排序
    求10个随机数,随机数要求为25-99的整数.能够被3整除的数
  • 原文地址:https://www.cnblogs.com/Moon-Face/p/14480135.html
Copyright © 2020-2023  润新知