import os
import shutil
import hashlib
import stat
# 获取通用唯一标识符
def UUID():
return uuid.uuid1()
# 获取一个随机文件名
def getRandomFileName():
uniqueId = UUID()
return uniqueId
# 将一个表示时间的字符串转换成标准时间戳
def str2timestamp(timeStr,timeFormart=\'%Y-%m-%d %H:%M:%S\'):
return int(time.mktime(time.strptime(timeStr, timeFormart)))
# 将一个标准时间戳转换为字符串
def timestamp2str(timestamp,timeFormart=\'%Y-%m-%d %H:%M:%S\'):
return time.strftime(timeFormart, time.localtime(timestamp))
# 取出时间戳的年月日信息
def getSuffix(timestamp):
return timestamp2str(timestamp,\'%Y%m%d\')
# 将列表分为 count 块
def listSplit(ary:list, count):
chunks = []
for i in range(0, len(ary), count):
chunks.append(ary[i:i+count])
return chunks
# 查找文件夹dirPath中的某个文件findFile
def findMyFileDir(dirPath, findFile):
files = []
dirs = []
# os.walk()方法是一个简单易用的文件、目录遍历器
# os.walk()的返回值为一个三元组:(root, dirs, files)
# root:指当前正在遍历的这个文件夹本身的地址
# dirs:dirs是一个list,内容是该文件夹中所有的目录的名字(不包含子目录)
# files:同样是一个list,内容是该文件夹下所有的文件(不包含子目录)
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):
# 递归创建dirPath中的路径,如果问价存在在不创建
os.makedirs(dirPath, parents=True, 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)
# 利用shutil模块完成文件复制
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() # lines是一个列表,每个元素是文件的一行
f.close()
newLines = []
for line in lines:
line = line.replace(\'\\n\', \'\').strip()
if line:
newLines.append(line)
return newLines
版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。



