python学习笔记番外:linux文件拷贝程序
python学习笔记番外:linux文件拷贝程序
为什么写这个程序
之前有说过,为了给亲戚从某视频网站批量下载视频我用python写了一个爬虫,经历一番波折后我成功把爬虫布到了家里的树莓派上,然后花了两天两夜从网上下了100G左右的视频,这时候又有一个问题,需要从树莓派连接的移动硬盘把数据转移到我亲戚的移动硬盘,一开始我是把亲戚的移动硬盘连到笔记本上,通过树莓派的smba共享访问然后拷贝,结果发现巨慢,无奈之下只能把亲戚的移动硬盘接到树莓派上,但是用啥方式拷贝呢,shell命令也不是不可以,但一来我这半桶水,这么多批量文件,出现个啥问题真不好排查,二来这两天python写的还算顺手,不如就当练习文件操作了,于是就有了这个python小程序。
程序本体
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+"\r\n")
#如果遇到文件输出error,跳过
try:
shutil.copy(orignalFile, destFile)
except:
sys.stdout.write("文件"+destFile+"复制出错,跳过\r\n")
else:
sys.stdout.write("已跳过文件"+orignalFile+"\r\n")
orignalDir = "/home/pi/NewmanDisk/haokan"
destDir = "/media/pi/新加卷/围棋教学资源/好看视频"
copyDir(orignalDir, destDir)
sys.stdout.write("复制完毕\r\n")
程序本身很简单,无非就是读取当前目录下的文件和子目录,文件的话直接拷贝,子目录的话就递归调用。
程序缺陷
拷贝过程中遇到input/output error报错,所以有了try/catch,但是对错误处理的相当草率,更合理的方式是将错误输出到一个文件中记录,因为这里是联手性质的一次性程序,所以没有做改进。
本篇文章首发自魔芋红茶的博客https://www.cnblogs.com/Moon-Face/
请尊重其他人的劳动成功,转载请注明。