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

Posted lvmenghui0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3的一些文件操作的脚手架相关的知识,希望对你有一定的参考价值。

用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(
, ‘‘).strip()
        if line:
            newLines.append(line)
    return newLines

 

以上是关于python3的一些文件操作的脚手架的主要内容,如果未能解决你的问题,请参考以下文章

scrapy主动退出爬虫的代码片段(python3)

scrapy按顺序启动多个爬虫代码片段(python3)

Python3 关于excel 文件格式xls之读取写入和追加

对于gulp代码构建工具的基本操作使用

python常用代码片段总结

nonebot脚手架安装不了