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
| """ 1)这个脚本的用处是批量修改文件的名称,如果存在已经修改过的名字的文件(加过前缀)就会跳过 2)这个脚本中修改的是图片,如果需要修改其他文件,可以单独创建一个变量,将代码中的 ‘.jpg’更换为变量 3)脚本符合三种情况,不含后缀名,前缀名需要修改,后缀名需要修改 4)这个脚本中还存在一些问题,如果缺失了某个图片,使得图片中数字码不连贯,这个脚本不会自动排序,需要手动排序否则 修改的名称会追加到所有文件的最后面,但可以重命名新的前缀,再改回来,这也是一种办法,针对这个问题以后会解决的 """
import os import sys
def renameall(): file_name = input("输入你想修改的文件夹所在的地址:") prefix_name = input("输入文件前缀名:") modify_list = [] last_list = [] num = 1 cum = 0 file_List = os.listdir(file_name) print("修改前:\n" + str(file_List)) current_path = os.getcwd() os.chdir(file_name)
for filename in file_List: (name, suffix) = os.path.splitext(filename) if '.' not in filename: modify_list.append(filename) if (name + '.jpg') not in file_List: os.rename(filename, name + '.jpg') else: last_list.append(filename) cum += 1 elif (prefix_name in filename) and (suffix != '.jpg'): modify_list.append(filename) if (name + '.jpg') not in file_List: os.rename(filename, name + '.jpg') else: last_list.append(filename) cum += 1 elif prefix_name not in filename: modify_list.append(filename) last_list.append(filename) cum += 1 num += 1 num -= cum
print('可以修改的文件名列表:\n{}'.format(modify_list)) print("---------------------------------------------------")
if modify_list: for filename in last_list: os.rename(filename, prefix_name + str(num) + '.jpg') num += 1 os.chdir(current_path) sys.stdin.flush() print("修改后:" + str(os.listdir(file_name))) else: print("没有可重命名的文件") return None os.chdir(current_path) sys.stdin.flush()
if __name__ == '__main__': renameall()
|