脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - 对Python 检查文件名是否规范的实例详解

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

2021-07-03 00:27愚公丨Acmen Python

今天小编就为大家分享一篇对Python 检查文件名是否规范的实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

如下所示:

?
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

延伸 · 阅读

精彩推荐