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/ 请尊重其他人的劳动成功,转载请注明。
原文地址:https://www.cnblogs.com/Moon-Face/p/14480135.html