文件整理

11.1 备份

有时候删除文件是不可逆操作。所以文件备份很重要,而且要多处备份,优盘一份,云端一份。然后再做接下来的练习。

11.2 统计文件数量

下面以我备份的手机照片为例,先看看有多少文件。

1
2
3
4
dir = '/Users/gaoshuaipeng/Downloads/iphone照片'
import os
files = os.listdir(dir)
print(len(files))

11.3 删除 (2).xxx 文件

1
2
3
4
5
6
7
8
9
import os
import re
dir = '/Users/gaoshuaipeng/Downloads/iphone照片'
files = os.listdir(dir)
file_hash = {}
for file in files:
file_key = getFileSha1(file)
if re.match('(\d+)',file):
os.remove(file)

11.4 删除重复文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 计算文件sha1值

import hashlib
def getFileSha1(filePath):
with open(filePath, "rb") as fp:
sha1obj = hashlib.sha1()
sha1obj.update(fp.read())
file_sha1 = sha1obj.hexdigest()
# print(file_sha1)
return file_sha1


import os
dir = '/Users/gaoshuaipeng/Downloads/iphone照片'
files = os.listdir(dir)
file_hash = {}
for file in files:
file_key = getFileSha1(file)
if !file_hash.has_key(file_key):
file_hash[getFileSha1(file)] = file
else:
os.remove(file)

文件太多,计算时间会很长。

11.5 文件按日期归档

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
# 计算文件sha1值

import hashlib
def getFileSha1(filePath):
with open(filePath, "rb") as fp:
sha1obj = hashlib.sha1()
sha1obj.update(fp.read())
file_sha1 = sha1obj.hexdigest()
# print(file_sha1)
return file_sha1


import os
import re
import shutil
dir = '/Users/gaoshuaipeng/Downloads/iphone照片'
new_dir = '/Users/gaoshuaipeng/Downloads/iphone'
files = os.listdir(dir)
file_hash = {}
for file in files:
file_key = getFileSha1(file)
if re.match('^20\d{2}', file):
sub_dir = re.match('^20\d{2}','2020-11').group(
if !os.path.exists(f'{new_dir}/{sub_dir}'):
os.mkdir(f'{new_dir}/{sub_dir}')
shutil.move(file, f'{new_dir}/{sub_dir}/{file}')

视频课程

西瓜视频 https://www.ixigua.com/6851323759329018371/