admin管理员组

文章数量:1558102

在日常工作中,我们少不了和各种电子文件打交道,对文件进行创建、修改、删除、恢复、压缩、解压等操作。随着我们计算机里的文件越来越多,高效率地管理文件变得越来越重要。本章介绍如何使用Python自动化处理文件和目录相关工作。

3.1文件基础知识

3.1.1文件存储

在前几章中,我们运行了各种Python代码,其数据都是存储在内存里面的。内存条上有许许多多电子元件,电子元件只能识别两种状态:通电或不通电。通过元件是否通电可以记录无数个0和1,0为off,1为on。每个元件可以视为1bit(位)信息,通过组合它们存放的信息,可以表达复杂的数据和信息。电信号难以永久存储,一旦关机,元件断电,元件上的数据自然也就消失了。为了永久存储这些数据,我们就要用到文件,文件是存储在物理存储介质(如硬盘)上的数据。打开文件可以理解为将物理存储介质中的数据调入内存,保存文件就是将数据从内存存入物理存储介质。物理存储介质有许多,如磁盘、机械硬盘、固态硬盘、光盘、U盘等,不同的介质有不同的存储原理。例如计算机机械硬盘是磁介质,通常是使用盘面上的磁粉的方向来表达0和1,通过修改磁粉的南北极来记录数据。开机以后,硬盘的盘面高速旋转,配合磁头伸缩,读取或者修改盘面不同区域磁粉的状态,来实现数据的读写。读取数据,就是磁头把感应到的磁信号转为电信号的过程。写入数据,就是磁头把电信号转化为磁信号并记录在硬盘上的过程。对于机械硬盘来说,一个电子文件要用许多磁粉来记录。当我们在删除文件时,并不会将这些磁粉全部修改状态。即使是彻底删除、清空回收站,也仅仅将这一块磁粉标记为空闲,也就是说可以用来写其他文件。根据这一情况,通过专业的软件是可以恢复删除的文件的。在误删除文件后,要停止计算机的存储操作,不要新建、复制文件,避免原文件所在的区域被新文件填充。硬盘的低级格式化实质是把硬盘存储区域全部写0覆盖一次。但是由于所有磁介质都存在剩磁效应的问题,磁粉的状态在一定程度上是抹除不净的,因此使用高灵敏度的磁头和放大器仍可以将原有信息提取出来。据一些资料介绍,即使磁盘已改写了12次,第一次写入的信息仍有可能复原出来。所以,一些涉密介质需要通过随机的方式反复写入35次,才能相对安全。当然,对于高度涉密的电子文件,存储介质都是一次性的,用完都要将介质粉碎、化学腐蚀、高炉熔化等,成本比较高。

U盘通过半导体电子元件来存储数据,不存在剩磁效应的问题。因此,只要把U盘中的数据覆盖一次就可以彻底清除U盘中的数据,当然这也意味着U盘数据难以恢复。

3.1.2文件的编码

编码是信息从一种形式转换为另一种形式的过程。在计算机的世界里只有数字0和1,电子文件也都是由一长串0和1的组合来存放的。对于读文件来说,如何识别文件里这些数字要表达的含义?对于写入文件来说,字母、汉字、颜色等信息要用什么样的0和1的组合来表达?下面一一解答这些问题。我们需要把人类能看得懂的字符(如字母、汉字、符号等)编码后,变成0和1的组合,才能存储到计算机中。反过来,如果不知道编码规则,我们也无法识别电子文件要表达的意思。例如,我们在文本编辑器Notepad++里面输入字母“A”,保存为TXT文档,如图3-1所示。

图3-1

读取TXT文档,看看里面保存的是什么信息。直接阅读二进制比较费事(太长了),因此通常以十六进制方式查看文件内容。WinHex是一个十六进制文件编辑软件,我们用它打开TXT文档,其中存放的是十六进制的41(为了避免和十进制数混淆,需要在前面加上0x,即0x41,对应十进制数为65),如图3-2所

本文标签: 高效文件管理