吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 594|回复: 5
收起左侧

[经验求助] Python编程:删除文件后磁盘空间并没变化

[复制链接]
MRGong 发表于 2024-3-25 15:39
25吾爱币
如下代码,我想实现,若文件md5相同,则删除该文件,并且通过硬链接指向。
但代码执行,磁盘空间未变化,想知道为啥?以及如何修改,多谢~
[Asm] 纯文本查看 复制代码
[mw_shl_code=python,true]import os
import hashlib


def calculate_md5(file_path):
with open(file_path, "rb") as f:
md5 = hashlib.md5()
while chunk := f.read(8192):
md5.update(chunk)
return md5.hexdigest()


paths = r'C:\Users\chillifish\Downloads'
filesmd5dirt = {}
filedirt = []
for filedirs, filepath, files in os.walk(paths):
for file in files:
filepath = os.path.join(filedirs, file)
filepathMD5 = calculate_md5(filepath)
if filepathMD5 in filesmd5dirt:
os.remove(filepath)
os.link(filesmd5dirt[filepathMD5], filepath)
else:
filesmd5dirt[filepathMD5] = filepath
[/mw_shl_code]

最佳答案

查看完整内容

在代码开头和结尾用shutil模块查看磁盘可用空间,我运行你的代码可以看到空间变多 import shutil print("Free disk space:", shutil.disk_usage("D:/")[2]/ (2**30), "GB")

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

mt324 发表于 2024-3-25 15:39
MRGong 发表于 2024-3-28 14:05
硬链接确实成功了,但即使用磁盘可用空间查看并没变化,所以仍旧怀疑我的代码正确性

在代码开头和结尾用shutil模块查看磁盘可用空间,我运行你的代码可以看到空间变多

import shutil

print("Free disk space:", shutil.disk_usage("D:/")[2]/ (2**30), "GB")
 楼主| MRGong 发表于 2024-3-25 15:39
import os
import hashlib


def calculate_md5(file_path):
        with open(file_path, "rb") as f:
                md5 = hashlib.md5()
                while chunk := f.read(8192):
                        md5.update(chunk)
        return md5.hexdigest()


paths = r'C:\Users\chillifish\Downloads'
filesmd5dirt = {}
filedirt = []
for filedirs, filepath, files in os.walk(paths):
        for file in files:
                filepath = os.path.join(filedirs, file)
                filepathMD5 = calculate_md5(filepath)
                if filepathMD5 in filesmd5dirt:
                        os.remove(filepath)
                        os.link(filesmd5dirt[filepathMD5], filepath)
                else:
                        filesmd5dirt[filepathMD5] = filepath
mt324 发表于 2024-3-25 22:23
用几个大文件测试了一下,运行完之后重复文件的inode号都变成同一个了,所以硬链接是创建成功了。你直接看文件夹-属性的空间占用是错误的,你在磁盘管理器里面或者右键C盘-属性看磁盘可用空间可以看到可用空间变多了。
freelive 发表于 2024-3-26 16:44
删除文件之后,刷新一下磁盘或者文件夹,再查看占用空间,应该是有变化的。
 楼主| MRGong 发表于 2024-3-28 14:05
mt324 发表于 2024-3-25 22:23
用几个大文件测试了一下,运行完之后重复文件的inode号都变成同一个了,所以硬链接是创建成功了。你直接看 ...

硬链接确实成功了,但即使用磁盘可用空间查看并没变化,所以仍旧怀疑我的代码正确性
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-14 14:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表