因为 MacOs 端微信保存文件的路径是这种形式
/Message/MessageTemp/一堆随机字符 /File(OpenData)/2022-09
相对于 Win 端的File/2022-09
太过复杂,而且每个联系人的随机字符串都不同,查找起来不太方便,所以今天(2022 年 9 月 23 日)中午的时候我打算写一个能定期将微信文件备份到特定文件夹,并按月份归档的 python 小程序。
刚开始我觉着很简单,不就是读取创建时间然后复制粘贴吗,然后我就开始了愉快地面向谷歌编程。
写着写着我开始不断想着添加新功能,微信每收发一个文件不管文件是否一样,都会在本地保存一份 --> 所以想着根据文件名去重 --> 又想到可能会有不同内容的同名文件 --> 不如根据 MD5+文件名去重 -- > 全查 MD5 太慢 --> 先看名字再检查 MD5
然后我自己就乱了,前面写了一大堆 if else break ,也没怎么写注释,出错以后往上查自己也看不懂了......
当时真是气死我了
大概就是这样:
for path, dir_list, source_file_list in g:
for source_file_list in source_file_list:
riqi = get_change_time(str(path) + '/' + str(source_file_list))
target_path = '' + riqi
target_path_file_name = return_target_file_name(target_path)
for i in target_path_file_name:
if i == source_file_list:
md5_target = return_md5(target_path + '/' + i)
md5_source = return_md5(path + '/' + source_file_list)
if md5_target==md5_source:
status=2
break
else:
print(i)
target_path_file_name.remove(i)
for uu in target_path_file_name:
md5_target = return_md5(target_path + '/' + uu)
md5_source = return_md5(path + '/' + source_file_list)
if uu == target_path_file_name:
status=1
break
else:
status=2
break
else:
status=3
现在我也没理清楚计算 md5 那段是怎么个逻辑
还好经过我的不懈努力,程序能正常工作了,上面想的几个功能也都实现了。从下午两点一直搞到晚上八点,晚饭也烦的没有吃,一个下午全耗在这了,啥正事也没干,就为了这个小功能(责任全在微信)。为什么说是挫败感呢?因为我感觉这个真是个挺简单的程序,而且晚上写完回看确实感觉很简单,但是耗费了我这么长的时间,而且感觉自己好菜....我不是科班出身,写代码全是个人爱好,我一直认为自己有点写代码的天赋,现在看来我应该去重新系统的学习一下如何写代码。
晚上睡不着,写出来感觉舒服多了,晚安兄弟们
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.