zoukankan      html  css  js  c++  java
  • 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/ 请尊重其他人的劳动成功,转载请注明。
  • 相关阅读:
    (cocos2d-js游戏)測试你的反应速度----------基本逻辑(上)
    Ubuntu上安装flashplayer
    多线程中的"断点"续传《notify()和wait()》
    HTML高级标签之表格标签
    leetcode
    4星|《经济学通识课》:深入浅出的经济学思想发展简史
    1星|《追随》:洞察力太差,有效信息太少,咨询经验太少(举的例子以跟自己孩子的互动为主)
    3星|《在苍茫中传灯》:国外投资业经典图书的内容介绍与学习心得
    2星|《新物种爆炸》:用自造的新名词把已知事情换了个说法。语文与逻辑都比较差。
    老钱观美业
  • 原文地址:https://www.cnblogs.com/Moon-Face/p/14480135.html
Copyright © 2011-2022 走看看