服务器之家

服务器之家 > 正文

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

时间:2021-07-03 00:27     来源/作者:愚公丨Acmen

如下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# 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后缀文件

?
1
2
find_nonstandard_name.exe -c
@pause

修改后脚本

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# 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])

添加检查文件重名功能

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# 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 检查文件名是否规范的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/sinat_36373961/article/details/76559513

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
2021德云社封箱演出完整版 2021年德云社封箱演出在线看
2021德云社封箱演出完整版 2021年德云社封箱演出在线看 2021-03-15
返回顶部