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

该博客提供了一个Python脚本,用于检查指定目录及其子目录下的.png文件命名是否符合规范,避免出现特殊字符和特定格式。脚本可以排除特定文件夹,并记录不合规文件路径。同时,还增加了检查文件重名的功能,将重名文件记录到单独的文本文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如下所示:

# 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 检查文件名是否规范的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值