码迷,mamicode.com
首页 > 编程语言 > 详细

python3的一些文件操作的脚手架

时间:2018-11-21 22:26:34      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:lis   mtr   replace   style   str   文件夹   util   dig   strip()   

用python把原来的脚本重构了一下,其中写了文件操作的一些函数,如下:

import os
import shutil
import hashlib
import stat

#查找文件夹中的某个文件
def findMyFileDir(dirPath, findFile):
    files = []
    dirs = []
    for root, dirs, files in os.walk(dirPath, topdown=False):
        for file in files:
            if file == findFile:
                return root
        for dir in dirs:
            findMyFileDir(os.path.join(root, dir), findFile)

#创建一个文件夹
def createDir(dirPath):
    os.makedirs(dirPath, exist_ok=True)

#删除一个文件
def delFile(filePath):
    if os.path.exists(filePath):
        os.remove(filePath)

#删除文件夹里所有的文件
def delDir(dir):
    if(os.path.isdir(dir)):
        for f in os.listdir(dir):
            delDir(os.path.join(dir, f))
        if(os.path.exists(dir)):
            os.rmdir(dir)
    else:
        if(os.path.exists(dir)):
            os.remove(dir)

#拷贝文件
def copyFile(sourceFilePath, destFilePath):
    if not(os.path.exists(sourceFilePath)):
        return False

    if os.path.exists(destFilePath):
        if getFileMd5(sourceFilePath) == getFileMd5(destFilePath):
            return True
        else:
            os.remove(destFilePath)

    destFileDir = os.path.dirname(destFilePath)
    os.makedirs(destFileDir, exist_ok=True)
    if not(shutil.copyfile(sourceFilePath, destFilePath, follow_symlinks=False)):
        return False            
    return True

#拷贝文件夹里的文件
def copyDir(sourceDir, destDir):
    if not(os.path.exists(sourceDir)):
        return False

    if os.path.exists(destDir):
        shutil.rmtree(destDir)

    if not(shutil.copytree(sourceDir, destDir, symlinks=True)):
        return False
    return True

#获取文件的md5
def getFileMd5(filePath):
    with open(filePath, rb) as f:
        content = f.read()
    hash = hashlib.md5()
    hash.update(content)
    return hash.hexdigest()

#获取一个文件夹里的所有的文件和该文件对应的md5
def dirList(dirPath):
    listDict = {}
    files = []
    dirs = []
    for root, dirs, files in os.walk(dirPath, topdown=False, followlinks=True):
        for file in files:
            filePath = os.path.join(root, file)
            listDict[os.path.relpath(filePath, dirPath).replace(
                \\, /)] = getFileMd5(filePath)
    for dir in dirs:
        dirList(os.path.join(root, dir))
    return listDict

#逐行读一个文件,并过来文件中某些行里回车和空格    
def readLineForFile(filePath):
    f = open(filePath, r)   
    lines = f.readlines()
    f.close()
    newLines = []
    for line in lines:
        line = line.replace(\n, ‘‘).strip()
        if line:
            newLines.append(line)
    return newLines

 

python3的一些文件操作的脚手架

标签:lis   mtr   replace   style   str   文件夹   util   dig   strip()   

原文地址:https://www.cnblogs.com/lmh001/p/9997766.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!