Python小技巧:利用python清理Linux系统磁盘空间中的大文件

前言

系统的磁盘空间是有限的,因此清理系统的磁盘空间是迟早的事。在博客中,小哥向你介绍如何利用python语言高效定位Linux系统大文件所在处,并针对性地进行清理。

步骤1——查看目标磁盘还剩多少空间

命令如下:

df -h

Python小技巧:利用python清理Linux系统磁盘空间中的大文件_第1张图片
可以看出 /project文件夹下磁盘容量为11T,磁盘使用率已高达99%,所剩空间不足140G。因此需要清理project文件夹下的大文件。

步骤2——查看目前文件夹各文件所占用的磁盘空间

命令如下:

cd /project  # 目标文件夹
du -h

结果如下:

从结果可以看出,运行结果并不是按文件夹大小进行排序,而是按遍历文件夹的顺序进行排序。因此,如果我们需要定位大文件的所在位置,还需要其它工具的协助。在这里,我选用python工具。

步骤三——利用python语言找出运行结果中的大文件(大于1G)

1. 将运行结果存储于指定文件

命令如下:

du -h > du_result.txt

2. 编写python程序

代码如下:

target_dir = "/project" # 进行大文件清理的目标路径
result_path = "/project/du_result.txt" # du -h > du_result.txt 

# 读取结果文件
with open(result_path, "r") as f:
    lines = f.readlines()

G_size = [] # 降序记录大于1G的大文件的实际文件大小 
G_path = [] # 降序记录大于1G的大文件夹的绝对路径
for line in lines:
    dir_size, dir_path = line.strip().split("\t")
    if "G" in dir_size:
        G_size.append(float(dir_size[:-1]))
        G_path.append(dir_path)

sorted_id = sorted(range(len(G_size)), key=lambda k: G_size[k], reverse=True) # 返回G_size降序排列后对应的原始索引
# 利用拿到的索引列表对G_size和G_path进行降序排列
G_size = [G_size[i] for i in sorted_id]
G_path = [G_path[i] for i in sorted_id]
for (size, path) in zip(G_size, G_path):
    print("{}G\t\t{}".format(size, target_dir + path[1:]))

运行结果如下:
Python小技巧:利用python清理Linux系统磁盘空间中的大文件_第2张图片
根据运行结果的提示,我们就可以对相关的大文件进行清理。比如我们需要清理掉/project/reid这个文件夹,命令如下:

rm -rf /project/reid  # 谨慎使用这个清理命令

你可能感兴趣的:(python小技巧,python,python,linux,开发语言)