删除Creo旧档

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
# -*- encoding: utf-8 -*-

import pandas as pd
import numpy as np
import os, re
import shutil

def get_file_base_name(name):
"""
去掉文件后缀名
参数:name(str)
原始文件名
"""
while re.search(r"(\.[a-z]+$)|(\.[0-9]+$)",name):
name = os.path.splitext(name)[0]
return os.path.splitext(name)[0]

def purge(fd):
"""
删除Creo软件的旧档文件
删除多重版本的文件(多重后缀名的文件),保留最新版本文件。并去除版本号后缀
参数:fd(str)
文件夹名称
"""
# 列出指定文件夹下的所有文件,包含子文件夹下的文件。得到一个完整文件名的列表
ls1 = [os.path.join(p, i) for p, d, f in os.walk(fd) for i in f]
# 去掉后缀名后的列表
ls2 = [get_file_base_name(i) for i in ls1]
# 列出有多重版本号的文件
ls3 = set([i for i in ls2 if ls2.count(i)>1])
# 删除低版本号的文件保留高版本
for i in ls3:
ls =[x for x in ls1 if i in x ]
if len(ls)>1:
print(i,sorted(ls))
for j in sorted(ls)[:-1]:
os.remove(j)
# 列出多版本的文件
ls4 = [os.path.join(p, i) for p, d, f in os.walk(fd) for i in f if re.search(r'\.[a-z]+\.\d+$', i)]
# 重命名,去除版本号
if len(ls4)>1:
for i in ls4:
name = os.path.splitext(i)[0]
shutil.move(i, name)

if __name__ == "main":
fd = "D:\3D"
purge(fd)