Python删除macOS产生的冗余文件

利用Python删除磁盘中macOS产生的冗余文件

特别说明:

请不要在macOS下运行此脚本,因为这些文件对于macOS来说是可能必须的。

使用此Python脚本或其中部分代码导致的个人文件被删除,本人概不负责。

请确认你有足够的能力应对各种突发情况,再使用此代码。

起因

由于我的U盘需要经常在各个系统之间拷贝、移动文件,所以其中难免会被创建很多在其他系统平台没用的文件。

比如Windows下会创建System Volume Information目录

Android平台下会创建.android_secure目录

相对于上面两个,macOS就比较难搞,不仅根目录下会有.fseventsd .Spotlight-V100 .Trashes文件夹,各个目录下还会存放.DS_Store目录信息文件,最要命的还是每打开一个文件就会创建一个._<原文件名>.<原扩展名>的一个文件,有时候会误打开甚至把不智能的设备搞死机。

基本思路

利用正则表达式匹配文件目录中的._开头,以及.DS_Store文件,把它们移动到备份文件夹。

备份的目的就是防止正则表达式匹配到同样以._开头的正 ♂ 常文件,需要手动确认后在一键删除。

上代码

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
#!/usr/bin/env python3
# encoding:UTF-8

import os
import shutil
import re
import time
import sys

def bye():
print("\n Bye!")
time.sleep(3)
sys.exit(0)

def delAll(path):
print("请检查备份文件夹是否有正常文件")
print("\n")
print("是否清空备份文件夹?(yes / no)\n")
s = input("> ")
if (s == "yes"):
for fileList in os.walk(aaa):
for name in fileList[2]:
os.remove(os.path.join(fileList[0], name))
shutil.rmtree(aaa)
if not (os.path.exists(aaa)):
print("删除成功!")

else:
print("Abort.")
bye()


def clean(path, aaa):
i = 0
pattern = "\._"
print("Selected path: " + path)
for dirpath, dirs, files in os.walk(path):
for file in files:
matchObj1 = re.match(pattern, file)
matchObj2 = re.match("\.DS_Store$", file)
if matchObj1:
i += 1
filePath = os.path.join(dirpath, file)
print(str(i) + " Found... " + filePath)
if (os.path.exists(aaa + "\\" + file)):
os.rename(aaa + "\\" + file, aaa + "\\" + file + str(i))
shutil.move(filePath, aaa)
else:
shutil.move(filePath, aaa)
if matchObj2:
i += 1
filePath = os.path.join(dirpath, file)
print(str(i) + " Found... " + filePath)
if (os.path.exists(aaa + "\\" + file)):
os.rename(aaa + "\\" + file, aaa + "\\" + file + str(i))
shutil.move(filePath, aaa)
else:
shutil.move(filePath, aaa)

if (i == 0):
print("No file found")
delAll(path)
bye()
else:
delAll(path)


def selectPath():
print("============================")
print("请输入需要处理的目录,例如:C: ")
print("输入 \"jhsb\" 处理当前目录 ")
src = input("> ")
return src


def mkDir(aaa):
if not (os.path.exists(aaa + "\\Mac-trash-file-backup")):
os.mkdir(aaa + "\\Mac-trash-file-backup")
time.sleep(0.5)
if (os.path.exists(aaa + "\\Mac-trash-file-backup")):
print("备份文件夹创建成功..." + aaa + "\\Mac-trash-file-backup")


if __name__ == "__main__":
currentPath = os.getcwd()
path = selectPath()
print("备份文件夹目录:(不要在处理的目录下!)")
aaa = input("Backup path > ")
mkDir(aaa)
aaa = aaa + "\\Mac-trash-file-backup"

if (path == "jhsb"):
clean(currentPath, aaa)
else:
clean(path, aaa)

遇到问题下方评论哦

打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!

请我喝杯咖啡吧~

支付宝
微信