python

超轻量级php框架startmvc

对Python 检查文件名是否规范的实例详解

更新时间:2020-07-05 03:36:02 作者:startmvc
如下所示:#coding=utf-8importosimportos.pathimportreimportarrayimportcmdimportpdbimportpickleimporttempfileimportsu

如下所示:


# coding=utf-8
import os
import os.path
import re
import array
import cmd
import pdb
import pickle
import tempfile
import subprocess
 
 
# rootPath = os.getcwd()
# print rootPath
rootPath = raw_input('The Check Path:')
nonCheckDir = raw_input('The Non Check DirName(DirName1;DirName2):')
nonCheckDirList = []
if nonCheckDir:
 nonCheckDirList = nonCheckDir.split(';')
# 路径字典
pathDic = {}
 
# 新建文件夹 os.path.isdir(rootdir+'/logout') 判断指定目录下该文件夹是否存在
if not os.path.isdir(rootPath+'/logout'):
 os.makedirs(rootPath + '/logout')
logPath=os.path.join(rootPath,'logout')
 
nonstandard_filename_path = open(logPath+'/nonstandard_filename_path.txt','w')
 
# 标准的符号库
num = "0123456789"
word = "abcdefghijklmnopqrstuvwxyz"
sym = "_."
# 符号库
symBank = []
for key in word:
 symBank.append(key)
for key in num:
 symBank.append(key)
for key in sym:
 symBank.append(key)
 
def GetAllDir(getPath):
 # print (getPath)
 paths = os.listdir(getPath)
 for dirName in paths:
 dirPath = os.path.join(getPath,dirName)
 if os.path.isdir(dirPath) and dirName != '.svn':
 # print dirPath
 relPath = dirPath[len(rootPath)+1:len(dirPath)]
 # print relPath
 if not nonCheckDirList.__contains__(relPath):
 pathDic[relPath] = dirPath
 GetAllDir(dirPath)
 
def GetAllFile(getPath):
 files = os.listdir(getPath)
 for fileName in files:
 filePath = os.path.join(getPath,fileName)
 if fileName.endswith('.png') or fileName.endswith('.PNG'):
 fileName = fileName[0:fileName.index('.')]
 if not set(fileName).issubset(symBank):
 # print fileName
 # print filePath
 nonstandard_filename_path.write(filePath + '\n')
 else:
 # (r'_[\d]*[x|X][\d]*\d') 正则表达式 (_100x100)
 sign = re.search(r'_[\d]*[x|X][\d]*\d',fileName,re.M|re.I)
 if sign:
 nonstandard_filename_path.write(filePath + '\n')
 
if __name__ == '__main__':
 print ('main')
 pathDic['curPath'] = rootPath
 GetAllDir(rootPath)
 for key in pathDic:
 # print key
 GetAllFile(pathDic[key])
 
 # line = "image_500100000"
 # obj = re.search(r'_[\d]*[x|X][\d]*\d',line,re.M|re.I)
 # line = line.replace(obj.group(),'=')
 # if obj:
 # print obj.group()
 # else:
 # print ("==-")
 # line1 = "image_500x100"
 # obj1 = re.search(r'[a-z0-9_]*',line1,re.M)
 # print obj1.group()

新建bat后缀文件


find_nonstandard_name.exe -c
@pause

修改后脚本


# coding=utf-8
import os
import os.path
import re
import array
import cmd
import pdb
import pickle
import tempfile
import subprocess
import sys
import getopt
 
rootPath = ""
nonCheckDirList = sys.argv[1:]
opts, args = getopt.getopt(sys.argv[1:],"cs:",["cPath="])
for opt,arg in opts:
 if opt == '-c':
 rootPath = os.getcwd()
 elif opt in ("-s","--cPath"):
 rootPath = arg
# 路径字典
pathDic = {}
 
# 新建文件夹 os.path.isdir(rootdir+'/logout') 判断指定目录下该文件夹是否存在
if not os.path.isdir(rootPath+'/logout'):
 os.makedirs(rootPath + '/logout')
logPath=os.path.join(rootPath,'logout')
 
nonstandard_filename_path = open(logPath+'/nonstandard_filename_path.txt','w')
 
def GetAllDir(getPath):
 # print (getPath)
 paths = os.listdir(getPath)
 for dirName in paths:
 dirPath = os.path.join(getPath,dirName)
 if os.path.isdir(dirPath) and dirName != '.svn':
 # print dirPath
 relPath = dirPath[len(rootPath)+1:len(dirPath)]
 # print relPath
 if not nonCheckDirList.__contains__(relPath):
 pathDic[relPath] = dirPath
 GetAllDir(dirPath)
 
def GetAllFile(getPath):
 files = os.listdir(getPath)
 for fileName in files:
 filePath = os.path.join(getPath,fileName)
 if fileName.endswith('.png') or fileName.endswith('.PNG'):
 fileName = fileName[0:fileName.index('.')]
 firstSign = re.search(r'^[a-z0-9_]*$',line1,re.M)
 if firstSign:
 # print filePath
 # (r'_[\d]*[x|X][\d]*\d') 正则表达式 (_100x100)
 sign = re.search(r'_[\d]*[x|X][\d]*\d', fileName, re.M | re.I)
 if sign:
 print fileName
 nonstandard_filename_path.write(filePath + '\n')
 else:
 print fileName
 nonstandard_filename_path.write(filePath + '\n')
 
if __name__ == '__main__':
 print ('main')
 pathDic['curPath'] = rootPath
 GetAllDir(rootPath)
 for key in pathDic:
 # print key
 GetAllFile(pathDic[key])

添加检查文件重名功能


# coding=utf-8
import os
import os.path
import re
import array
import cmd
import pdb
import pickle
import tempfile
import subprocess
import sys
import getopt
 
nonCheckDirList = sys.argv[1:]
rootPath = os.getcwd()
checkRepetPathList = []
if nonCheckDirList:
 rootPath = os.path.realpath(os.path.join(os.getcwd(),nonCheckDirList[0]))
 if nonCheckDirList[0] == "./":
 rootPath = os.getcwd()
 for _path in nonCheckDirList:
 # -- 检查重命名路径
 _cmdRepet = _path[0:2]
 if _cmdRepet == "/r":
 repetPath = _path[len(_cmdRepet):len(_path)]
 print repetPath
 checkRepetPathList.append(repetPath)
print rootPath + '\n'
# 路径字典
pathDic = {}
# 重名路径字典
repetDic = {}
# 新建文件夹 os.path.isdir(rootdir+'/logout') 判断指定目录下该文件夹是否存在
 
# if not os.path.isdir(rootPath+'/logout'):
# os.makedirs(rootPath + '/logout')
# logPath=os.path.join(rootPath,'logout')
logPath = os.getcwd()
nonstandard_filename_path = open(logPath+"\\"+u"不规范命名文件".encode("GBK") + ".txt",'w')
 
def GetAllDir(getPath):
 # print (getPath)
 paths = os.listdir(getPath)
 for dirName in paths:
 dirPath = os.path.join(getPath,dirName)
 if os.path.isdir(dirPath) and dirName != '.svn':
 # print dirPath
 relPath = dirPath[len(rootPath)+1:len(dirPath)]
 # print relPath
 if not nonCheckDirList.__contains__(relPath):
 pathDic[relPath] = dirPath
 GetAllDir(dirPath)
 
def GetAllFile(getPath):
 files = os.listdir(getPath)
 for fileName in files:
 filePath = os.path.join(getPath,fileName)
 if fileName.endswith('.png') or fileName.endswith('.PNG'):
 fileName = fileName[0:fileName.index('.')]
 firstSign = re.search(r'^[a-z0-9_]*$',fileName,re.M)
 if firstSign:
 # print filePath
 # (r'_[\d]*[x|X][\d]*\d') 正则表达式 (_100x100)
 sign = re.search(r'_[\d]*[x|X][\d]*\d', fileName, re.M | re.I)
 if sign:
 print fileName
 nonstandard_filename_path.write(filePath + '\n')
 else:
 print fileName
 nonstandard_filename_path.write(filePath + '\n')
 
def CheckRepetFile(getPath):
 if checkRepetPathList:
 paths = os.listdir(getPath)
 for dirName in paths:
 dirPath = os.path.join(getPath, dirName)
 if os.path.isdir(dirPath) and dirName != '.svn':
 # print dirPath
 relPath = dirPath[len(rootPath) + 1:len(dirPath)]
 # print relPath
 repetDic[relPath] = dirPath
 CheckRepetFile(dirPath)
 
 
imageList = []
repetImagePath = []
def GetCheckRepetFile(getPath):
 files = os.listdir(getPath)
 for fileName in files:
 filePath = os.path.join(getPath, fileName)
 if fileName.endswith('.png') or fileName.endswith('.PNG'):
 # print filePath
 imageList.append(fileName)
 repetImagePath.append(filePath)
 
repet_filename_path = open(logPath+"\\"+u"重复命名文件".encode("GBK") + ".txt",'w')
 
if __name__ == '__main__':
 # print ('main')
 pathDic['curPath'] = rootPath
 GetAllDir(rootPath)
 for key in pathDic:
 # print key
 GetAllFile(pathDic[key])
 print '\n' + "The Logout Path:" + logPath+"\\"+u"不规范命名文件".encode("GBK") + ".txt"
 
 
 repetDic['curPath'] = rootPath
 # 检查重复文件路径列表
 for __path in checkRepetPathList:
 _repetPath = os.path.join(rootPath, __path)
 CheckRepetFile(_repetPath)
 # 遍历路径获得所有图片
 for key in repetDic:
 GetCheckRepetFile(repetDic[key])
 _newImageList = []
 for image in imageList:
 repetCount = imageList.count(image)
 if repetCount > 1 :
 if not image in _newImageList:
 _newImageList.append(image)
 for repetImage in _newImageList:
 print repetImage
 repet_filename_path.write(repetImage + '\n')
 for repetPathPath in repetImagePath:
 fileNameName = os.path.basename(repetPathPath)
 if repetImage == fileNameName:
 repet_filename_path.write(repetPathPath + '\n')
 # print repetPathPath
 print '\n' + "The Logout Path:" + logPath+"\\"+u"重复命名文件".encode("GBK") + ".txt"
 
 
 

以上这篇对Python 检查文件名是否规范的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

Python 文件名 规范