python判断全角半角和特殊字符
import os
import re
class CustomError(Exception):
def __init__(self, ErrorInfo):
super().__init__(self)
self.errorinfo = ErrorInfo
def __str__(self):
return self.errorinfo
def check_file_name(files_name):
check_string_isfullwidth(files_name)
def check_string_isfullwidth(files_name):
for char in files_name:
try:
check_char_isfullwidth(char)
except CustomError as e:
raise CustomError('※※※ファイル名※※※【' + files_name+ '】' +e.errorinfo)
def check_char_isfullwidth(uchar):
inside_code = ord(uchar)
jap = re.compile(r'[\u3040-\u309F\u30A0-\u30FF\u4e00-\u9fa5]')
jap1 = re.compile(r'[\\/:{};,$@&*?"<>|%\#]+')
jap2 = re.compile(r'[\u0020]+')
if inside_code == 12288:
raise CustomError('全角スペースが含まれている')
elif 65281 <= inside_code <= 65374:
raise CustomError('全角キャラクタが含まれている:'+uchar)
elif jap.search(uchar):
raise CustomError('日本語が含まれている:'+uchar)
elif jap1.search(uchar):
raise CustomError('特別なキャラクタが含まれている:'+uchar)
elif jap2.search(uchar):
raise CustomError('半角スペースが含まれている:'+uchar)
return uchar
base_dir = os.getcwd()
ff = []
for path, direction, files in os.walk(base_dir):
for file in files:
ff.append(os.path.join(path, file))
fd = [f.split('\\')[-1] for f in ff]
print('すべてのファイル:', fd);
print('========================');
print('ファイル名不正一覧');
print('========================');
for i in fd:
try:
check_file_name(i)
except CustomError as e:
print(e)
print('========================');
input('Press Enter to exit…')