文件自动化处理

1.1 读写文件

我们知道,程序运行时,可以用变量来保存运算结果,但如果希望程序运行关闭后,依然可以查看运行后的结果,就需要将数据保存到文件中。该篇博客就是使用python在硬盘上创建、读取和保存文件的一篇博客。

1.1.1 文件与文件路径

文件的两个属性:“路径”和“文件名”,路径指明文件在计算机上的位置,文件名是指该位置的文件的名称。
在Windows上,用“\”作为文件夹之间的分隔符,而在OS X和Linux上,“/”作为路径分隔符。
在这里插入图片描述

1.1.2 当前工作目录

每个运行在计算机上的程序,都有一个“当前工作目录”。利用os.getcwd()函数,可以取得当前工作路径的字符串,并可以利用os.chdir()改变它。
在这里插入图片描述

1.1.3 路径操作

1.1.3.1 绝对路径和相对路径

“绝对路径”,总是从根文件夹开始的。

“相对路径”,相对于程序的当前工作目录。

相对路径中,“.”表示当前目录的缩写,“…”表示父文件夹。

几个常用的绝对路径和相对路径处理函数
os.path.abspath(path):将相对路径转化为绝对路径,将返回参数的绝对路径的字符串。
os.path.isabs(path):判断是否是绝对路径,是返回True,不是则返回False。

在这里插入图片描述

1.1.3.2 路径操作

os.path.relpath(path,start):返回从start路径到path的相对路径的字符串。如果没提供start,就使用当前工作目录作为开始路径。
os.path.dirname(path):返回当前路径的目录名称。
os.path.basename(path):返回当前路径的文件名称
在这里插入图片描述

如果同时需要一个路径的目录名称和基本名称,可以调用os.path.split(),获得这两个字符串的元组。
在这里插入图片描述

我们也可以调用os.path.dirname()和os.path.basename(),将它们的返回值放在一个元组中,从而得到同样的元组。效果同上。

如果我们想返回每个文件夹的字符串的列表。用os.path.split()无法得到,我们可以用split()字符串方法,并根据os.sep中的字符串进行分割。path.sep变量设置为正确的文件夹分割斜杠。
在这里插入图片描述

1.1.3.3 路径有效性检查

如果提供的路径不存在,很多python函数就会崩溃并报错。os.path模版提供了一些函数,用于检测给定的路径是否存在,以及判定是文件还是文件夹。

os.path.exists(path):如果path参数所指的文件或文件夹存在,则返回True,否则返回Flase。
os.path.isfile(path):如果path参数存在,并且是一个文件,则返回True,否则返回False。
os.path.isdir(path):如果path参数存在,并且是一个文件夹,则返回True,否则返回False。

1.1.4 文件及文件夹操作

1.1.4.1 用os.makedirs()创建新文件夹

注:os.makedirs()可以创建所有必要的中间文件夹。在这里插入图片描述
如上图,该文件夹已存在,不会覆盖,所以报错。

1.1.4.2 查看文件大小和文件夹内容

我们已经可以处理文件路径,这是操作文件及文件夹的基础。接下来,我们可以搜集特定文件和文件夹的信息。os.path模块提供了一些函数,用于查看文件的字节数以及给定文件夹中的文件和子文件夹。
os.path.getsize(path):返回path参数中文件的字节数。
os.listdir(path):返回文件名字符串的列表,包含path参数中的每个文件。
在这里插入图片描述
如果想知道目录下所有文件的总字节数,可以同时使用os.path.getsize()os.listdir()
在这里插入图片描述

1.1.6 文件读写过程

读写文件3个步骤:

1.调用open()函数,返回一个File对象。

2.调用File对象的read()write()方法。

3.调用File对象的close()方法,关闭该文件。

1.1.6.1 用open()函数打开文件

要用open()函数打开一个文件,就要向它传递一个字符串路径,表明希望打开的文件。这既可以是绝对路径,也可以是相对路径。open()函数返回一个File对象。
在这里插入图片描述
可以看到,调用open()函数将会返回一个File对象。当你需要读取或写入该文件,就可以调用File对象的方法。

1.1.6.2 读取文件内容

有了File对象,我们就可以开始从它读取内容。
read():读取文件内容。

readlines():按行读取文件中的内容,取得一个字符串列表,列表中每个字符串是文本中的一行且以\n结束。
在这里插入图片描述

1.1.6.3 写入文件

需要用“写模式”‘w’和“添加模式”'a’打开一个文件,而不能用读模式打开文件。
“写模式”将覆写原有的文件,从头开始。“添加模式”将在已有文件的末尾添加文本。
注意,write()方法不会像print()函数那样,在字符串的末尾自动添加换行字符。必须自己添加该字符。

1.1.6.4 保存变量

1)、shelve模块

shelve模块,可以将Python中的变量保存到二进制的shelf文件中。这样,程序就可以从硬盘中恢复变量的数据。
在这里插入图片描述
在OS X上,只会创建一个data.db文件。

重新打开这些文件,取出数据。注意:shelf值不必用读模式或写模式打开,因为打开后,既能读又能写。
在这里插入图片描述
就像字典一样,shelf值有keys()values()方法,返回shelf中键和值的类似列表的值。但是这些方法返回类似列表的值,却不是真正的列表,所以应该将它们传递给list()函数,取得列表的形式。
在这里插入图片描述

2)、用pprint.pformat()函数保存变量

pprint.pformat()函数返回要打印的内容的文本字符串,这个字符串既易于阅读,也是语法上正确的Python代码。

假如,有一个字典,保存在一个变量中,希望保存这个变量和它的内容,以便将来使用。pprint.pformat()函数将提供一个字符串,我们可以将它写入.py文件。这个文件可以成为我们自己的模块,如果需要使用存储其中的变量,就可以导入它。

import语句导入的模块本身就是Python脚本。如果来自pprint.pformat()的字符串保存为一个.py文件,该文件就是一个可以导入的模块
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值