Python实用小工具之文件内容替换

咪哥杂谈

共 1181字,需浏览 3分钟

 ·

2020-05-25 23:20

咪哥杂谈


2a48ebb3039c66817761c1bea6f37bf0.webp

本篇阅读时间约为 6 分钟。


1

前言


上周用 Python 帮同学写了一个文件以及文件内容替换的小工具,原本是没有界面的,纯属编码,后来为了做成小工具,特意加上了界面。


今天上来给大家分享一下,有需要可以自取。


关于代码部分,我会在这篇文章里将我遇到的难点写出来,后续如果有同学遇到相同的问题,可以有个参考。


废话不多说,我录了一段视频,感兴趣的同学可以看下演示。


2

视频演示



3

用到的技术


用到的库有三种,分别是:


  • tkinter (画界面自带的Python库)

  • os (Python自带的系统库)

  • chardet (识别文件编码用的第三方库)


4

遇到的难点


Python读取文件内容的时候,会经常遇到编码不一致导致内容报错,此处便是整个小程序最大难点。


有没有办法能解决不同文件,编码自动识别的方法?那就是上面提到的 chardet(编码甄别)可以这么实现:


 # 读该文件编码格式with open(old_file_path, 'rb') as file:    curr_encode = chardet.detect(file.read())['encoding']# 如果被替换的字符串在文件内容中,先按行读出来,在替换with open(old_file_path, 'r', encoding=curr_encode, errors='ignore') as f:    for line in f.readlines():        ........


通过这种形式读取到文件内容,自动识别编码。


但这样有个坏处,就是遇到大文件的时候,一口气会把文件全部加载到内存中,有可能会造成电脑的卡顿。
所以在所有处理大数据文件的时候,有一种做法叫 "分而治之" 。
我们可以通过分块的形式,逐行去"喂给" detector 进行编码识别处理。当 detector 识别到的数据达到一定程度时,detector.done会返回 True,此时就可以获取该文件的编码格式了。


如图(具体可以去看源码):

4a94f81dfe4ed310c8d12798ac2c6c81.webp


5

结语


关于这个小工具,原本我是想打 exe 文件和 dmg 文件提供给大家的。


但那天试了一下才知道,pyinstaller 的库是根据电脑系统进行编译的,比如你的系统是 windows ,它自动打包应用出来的就是 exe,要是 mac os,打包出来的就是 unix 底层的执行文件。


所以这里就不直接提供你们成型的工具了,如果你有需要,可以后台回复 【替换】关键词,获取源码,之后你们在自己去打包吧。


不会打包的,可以参考下之前写的这篇文章。

exe文件?你也可以编写!


好啦,本期视频就到这里,如果你有什么问题或者想讨论的,欢迎评论区留言探讨!期待你的留言呐!




▼往期精彩回顾▼大学时遇到的奇葩诈骗经历看完何同学的这期B站视频,我做了个决定...




浏览 41
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报