Python程序设计 第8章:文件 *** 作

Python程序设计 第8章:文件 *** 作,第1张

Python程序设计 第8章:文件 *** 作
  • 8.1 文件对象
    • 8.1.1 打开文件
    • 8.1.2 关闭文件
    • 8.1.3 文件对象的属性
    • 8.1.4 文件对象的方法
  • 8.2 文件系统访问
    • 8.2.1 os模块
    • 8.2.2 文件路径 *** 作
  • 8.3 文件数据处理
    • 8.3.1 按字节处理数据
    • 8.3.2 使用文件迭代器
    • 8.3.3 结构化数据存储
    • 8.3.4 序列化存储
  • 8.4 综合案例
  • 8.5 总结

学习目标:

  • 了解什么是文件及文件对象
  • 掌握文件对象属性及方法
  • 掌握文件系统 *** 作
  • 理解文件数据处理

思维导图:

8.1 文件对象 8.1.1 打开文件

Python使用内置函数open()打开文件,创建file对象


在系统中,只有存在file对象后,用户才能对文件进行相应的 *** 作。


语法格式为:open(file, mode='r', encoding=None)
各个参数的含义如下:
file:代表需要打开的文件名。



mode:表示该文件的打开模式,该参数是可选的,默认为’r '。



encoding:用于指定文件的编码方式。


mode参数指定打开文件时的 *** 作方式,文件打开的主要模式见下表。




默认情况下(默认是UTF-8)文件是以文本形式打开,因此文件读出写入的数据字符串均会被编码成特定的编码方式


例如:在当前目录中以覆盖写的方式打开file.txt文件

file=open('file,txt','w')
print('文件名:',file.name)

结果:
在项目所在文件夹下创建了file.txt文件
同时控制台输出如下:

文件名: file,txt
8.1.2 关闭文件

关闭文件使用的是内置的close()方法
用于关闭该文件,并清除文件缓冲区里的信息,关闭文件后不能再进行写入。



语法格式如下:
fileObject.close()
当一个文件对象的引用被重新指定给另一个文件时,系统会关闭先前打开的文件(意思是给文件对象赋了一个新的值,那系统会关闭之前的那个文件。


以下代码演示了close()方法的具体用法:
在当前目录汇总

8.1.3 文件对象的属性

open()方法可以返回具备比较丰富的属性和成员方法的文件对象,可以通过访问文件不同属性来获取已打开文件的状态、模式等。


下表列出了文件对象常用的属性。




下述代码实例演示了如何获取和使用文件对象属性。



8.1.4 文件对象的方法

除了打开和关闭这两种基本的文件 *** 作外,Python语言还提供了很多文件处理相关的对象方法,如文件的读取、写入、定位等。


1. 文件基本读写

  • Python语言中提供了read()和write()方法实现对文件数据的基本读写。


  • 具体过程:
    ① 通过open()方法获得文件对象句柄;
    ② 通过write()方法和read()方法进行写入和读取数据。


下述代码实例演示了下面是一个将字符串写入到文件tmp.txt:

2. 文件按行读写

Python语言中为了提高读写的效率,还提供了按行读写的方式,实现逐行数据处理。



文件按行读写涉及的主要方法有readline()readlines()writelines()等。


  • readline()方法读取单独的一行,即从当前位置开始到一个换行符结束之前的所有字节,包括这个换行符。


  • readlines()方法读取一个文件中所有的行并将其作为列表返
  • writelines()方法会把指定字符串写入文件。


下述代码实例演示了按行读写 三个方法的具体过程。




3. 文件指针

  • 在Python语言中,支持使用文件指针的形式定位文件的读写位置,其主要由tell()方法和seek()方法来实现。


  • tell()方法返回一个整数,该数值计量了自文件开头到指针处的比特数;可以使用seek(offset[,from_what])方法改变文件对象的指针。


    offset参数表示从指定引用位置移动的比特数
    from_what值为0时表示自文件起始处开始,为1时表示自当前文件指针位置开始,为2表示自文件末尾开始。



    下述代码实例演示了如何使用seek()方法。



8.2 文件系统访问 8.2.1 os模块

在Python中,对文件系统的访问大多通过的os模块实现在Python语言中,os模块提供了有很多对文件目录进行 *** 作的方法,os模块常用方法下表。



8.2.2 文件路径 *** 作
  • 在实际的编程过程中,os.path模块被用来获取文件所在路径信息,os.path模块主要用于获取文件的属性。


  • 以下代码示意了如何查看当前路径及路径下的文件
8.3 文件数据处理 8.3.1 按字节处理数据

通过迭代的方法按字节处理是最常见的对文件数据处理的方式;
如下述代码演示了如何在在while循环中使用read方法,通过循环对每个字节进行读取;

8.3.2 使用文件迭代器

使用for循环迭代读取文件内容,可以每次循环读取其中一行内容,提高读取效率,如下代码所示。



8.3.3 结构化数据存储

Python语言提供的文件读取方法read()只能返回字符串数据,对于数值类型的读取,需要将其再借助int()等数值转换方法进行数值转换。


为了编写和保存复杂数据类型,Python允许使用常用的数据交换格式JSON(Java Script Object Notation)。


标准模块json可以接受Python数据结构,并将它们转换为字符串表示形式,此过程称为序列化


从字符串表示形式重新构建数据结构称为反序列化


以下代码示意了json模块的使用方法。



8.3.4 序列化存储
  • Python语言提供的pickle模块实现了基本的数据序列和反序列化。


    通过pickle模块的序列化 *** 作能够将程序中运行的对象信息永久存储保存到文件中,并且能够从文件中恢复上一次程序保存的对象。


  • 在pickle模块中主要提供了两个常用的方法方法,即dump()load()


    dump()方法用于实现持久化数据对象,将其保存到文件中。


8.4 综合案例

以学生成绩后台管理系统为例,系统中常常需要处理大量的数据,而这些数据通常以文件的形式存储在磁盘上。


实例需求是根据学生的成绩情况计算出其平均分和总分,然后将计算的结果再存储到磁盘文件中。


学生的基本信息存放在文件student.txt中,其数据存储格式如图8-1所示。


学生基本信息和最终计算出平均分以及总分都存储到student_score_result.txt中,如图8-2所示。




归一化处理

为消除不同特征之间量纲的影响,在数据处理时常常需要对数据做归一化处理,使得不同指标之间具有可比性。


在实际数据处理时,可能不知道每个特征的取值范围,在这里使用下面的公式对学生成绩归一化,使得结果映射到[0, 1]的范围内,实现对原始数据的等比放缩:

8.5 总结
  • 本章从Python的文件的对象开始,分别介绍了文件对象的属性和方法,以及如何使用os模块和 *** 作系统交互以进行文件和目录 *** 作等。


  • 介绍了Python中文件数据的处理方法,包括按字节处理、通过文件迭代器处理数据、使用json存储结构化数据和使用序列化存储文件数据等。


  • 通过两个综合案例,详细演示了较为复杂的数据处理和文件 *** 作流程。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/580022.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-11
下一篇 2022-04-11

发表评论

登录后才能评论

评论列表(0条)

保存