(五)Python File(文件)

简介: (五)Python File(文件)

前言:文件系统是操作系统的重要组成部分,它规定了计算机对文件和目录进行操作处理的各种标准和机制。以此为基础,编程语言提供了文件类型,在程序中亦可通过文件实现数据的输入输出。文件的输入输出是指从已拥的文件中读取数据,并将处理的结果按照一定格式输出到文件中,适用于大批量额数据处理要求。


一、文件的基本概念


  • 1.1、操作系统对数据进行管理是以文件为单位的,当访问磁盘等外存上的数据时,必须先按文件名找到指定的文件,然后再从该文件中读取数据;如果要向外部介质上存储数据,也必须先创立一个文件,才能向其输出数据。在程序中对文件访问和处理时,情况是类似的,所有的操作都与文件的表示、文件的编码和文件的类型有着密不可分的关系。
    文件是存储在外部介质上的数据集合,通常可以长久保存,也称为磁盘文件。
  • 1.2、文件的编码
    按照文件的编码方式,可将文件分为两种类型:文本文件二进制文件


二、文件操作


程序对文件的操作一般包括:打开文件读取文件对文件数据类型进行处理写入文件关闭文件等。信息项是构成文件内容的基本单位,Python文本的信息项是字符,二进制文件的信息项是字节。读指针用记录文件当前的读取位置,它指向下一个将要读取的信息项;写指针来记录文件当前的写入位置,要写入的下一个信息项将从该位置处存入。


  • 2.1、文件的打开与关闭
    打开文件是指建立文件对象和物理文件的关联以及建立文件的各种相关信息。Python的open()语句是返回一个文件的对象,括号中通常包含两个参数:  <文件对象>= open(<文件名>[,<模式>]),第一个参数<文件名>表示程序中需要操作的文件对应的完整物理文件名。第二个字符串类型参数<模式>,表示文件使用的方式,<模式>参数是可以省略的,省略默认为 r,使用方式如下:


模式 含义
r 以只读方式打开
w 以写方式打开一个文件,若这个文件已存在,则覆盖原来的内容;若这个文件不存在,则创建这个文件
x 创建一个新文件,以写方式打开,若文件已存在,则报错FileExistsError
a 以写方式打开,写入的内容追加在文件的末尾
b 表示二进制文件,添加子其他控制字符后
t 表示文本文件,默认值
+ 以修改方式打开,支持 读/写
  • 当处理完一个文件后,需要调用以下语句关闭文件:<文件对象>.close()
    文件关闭后可以保证正常释放文件对象所占用的系统资源 。
    下面以读写二进制模式打开当前目录的文件实例


>>> import os
>>> os.chdir('/Users/wangchong/Desktop')
>>> f = open('JK.text','rb+')
  • 上面的前两条语句将当前文件JK.text目录设置在桌面,第三条语句创建了文件对象f,f与已存在的文件'/Users/wangchong/Desktop/JK.text'建立关联。
  • 2.2、定位通过open 语句创建了一个文本对象f后,读/写指针会定位在文件的头部即最左边开始的位置,然后文件中的信息将按照从左到右的顺序被访问,这称为顺序存取。磁盘中的信息是允许随机访问的。所以,我们将读/写指针移动到磁盘的任何位置进行存取操作。Python 语言中的文件定位语句seek(),可以帮助我们实现文件的随机读/写。seek()语句的格式如右f.seek(<偏移值>[,<起始位置>])其中,起始位置为0 表示 来自文件起始处开始(默认值,可省略),1表示从当前文件指针位置开始,2表示从文件末尾开始。偏移值表示从起始位置再移动一定量的距离,偏移值的单位是字节(bye)。偏移值为正数表示向右(即文件尾的方向)移动,偏移值为负数表示向左(即向文件头的方向)移动。起始位置非0,即从当前位置或文件尾部开始访问文件时,只有b模式可以指定非0的偏移值。
  • 随机访问二进制文件示例:(文件JK.text在桌面)


>>> import os
>>> os.chdir('/Users/wangchong/Desktop')
>>> file1 = open('JK.text','rb+')
>>> file1.write(b'Be at war with your vices')
25
>>> file1.seek(6)
6
>>> file1.read(3)
b'war'
>>> file1.seek(-5,2)
20
>>> file1.read(4)
b'vice'
>>> file1.close()
  • 本例以二进制读/写方式打开空的文本文件'/Users/wangchong/Desktop',并向该文件中写入25个二进制数形式的字符。然后通过seek语句将指针从头文件开始移动6个字节1个字节对应一个字符,再从第7个字节开始读取3个字节,对应的字符为b'war'。之后又将指针从文件尾部开始向左移动5个字节,定位在 vices之前,再读取4个字节得到对应的字符b'vice
  • 随机访问文本文件示例


>> import os
>>> os.chdir('/Users/wangchong/Desktop')
>>> file1 = open('JK.text','r+')
>>> file1.write('微风送来淡淡花香')
8
>>> file1.seek(8)
8
>>> file1.read(4)
Traceback (most recent call last):
   File "<input>", line 1, in <module>
   File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/codecs.py", line 322, in decode
      (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x81 in position 0: invalid start byte
>>> file1.seek(0)
0
>>> file1.seek(8)
  • 2.3、文件的读取、写入、追加
  • 2.3.1、从文件中读取数据:Python 为文件的读取提供了三种文件对象方法,方法的返回值即为读取的内容,可以根据返回值的不同,保存到相应类型的变量中。
  • file.read(size) 方法:该方法返回一个字符串,内容为size的文本。数字类型参数size表示读取的字符数,可以省略。如果省略size参数,则表示读取文件所有内容并返回。如果已达到文件的末尾,file.read()将返回一个空字符串('')。例如:


>>> import os
>>> os.chdir('/Users/wangchong/Desktop')
>>> file1 = open('JK.txt')
>>> file.read()
'锄禾日当午'
>>> file.read()
''
  • file.readline() 方法: 该方法返回一个字符串,内容为文件的当前一行。换行符 (\n) 留在字符串的末尾。如果已达到文件的末尾,file.readline()将返回一个空字符串('')。如果是一个空行,则返回 '\n'


>>> import os
>>> os.chdir('/Users/wangchong/Desktop')
>>> file1 = open('JK.txt')
>>> file1.seek(0)
0
>>> file1.readline()
'锄禾日当午'
>>> >>> file1.readline()
''
  • file.readlines() 方法:该方法返回一个列表,列表中的每个字符串类型元素对应文件的每行(包括结尾的换行符号  “\n”)。例如:


>>> file1.readlines()
['锄禾日当午\n']
>>> file1.readlines()
[]
>>> file1.close()
  • 2.3.2、将数据写入文件
    file.write(string) 方法将字符串 string 的内容写到对应的文件中,并返回写入的字符数。但write 语句不会自动换行,如果需要换行,则需要使用换行字符 \n。例如:


>>> file1 = open('JK.txt','w')
>>> file1.write('宝剑锋从磨砺出\n')
>>> file1.close()
  • 其中,'\n'代表一个字符。以w模式打开的JK.txt文件的原有内容将被覆盖。
  • 2.3.3、将数据追加到文件末尾


>>> file1 = open('JK.txt','a')
>>> file1.write('梅花香自苦寒来\n')
>>> file1.close()


image.png

a模式打开 JK.txt 文件,指针会移动到末尾处,写入的内容将追加到该文件中,但是必须关闭文件才能生效。


目录
相关文章
|
1月前
|
自然语言处理 数据处理 Python
python操作和解析ppt文件 | python小知识
本文将带你从零开始,了解PPT解析的工具、工作原理以及常用的基本操作,并提供具体的代码示例和必要的说明【10月更文挑战第4天】
336 60
|
1月前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
python知识点100篇系列(15)-加密python源代码为pyd文件
|
18天前
|
开发者 Python
Python中__init__.py文件的作用
`__init__.py`文件在Python包管理中扮演着重要角色,通过标识目录为包、初始化包、控制导入行为、支持递归包结构以及定义包的命名空间,`__init__.py`文件为组织和管理Python代码提供了强大支持。理解并正确使用 `__init__.py`文件,可以帮助开发者更好地组织代码,提高代码的可维护性和可读性。
17 2
|
1月前
|
Linux 区块链 Python
Python实用记录(十三):python脚本打包exe文件并运行
这篇文章介绍了如何使用PyInstaller将Python脚本打包成可执行文件(exe),并提供了详细的步骤和注意事项。
58 1
Python实用记录(十三):python脚本打包exe文件并运行
|
1月前
|
Java Python
> python知识点100篇系列(19)-使用python下载文件的几种方式
【10月更文挑战第7天】本文介绍了使用Python下载文件的五种方法,包括使用requests、wget、线程池、urllib3和asyncio模块。每种方法适用于不同的场景,如单文件下载、多文件并发下载等,提供了丰富的选择。
|
1月前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
|
1月前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
44 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
|
1月前
|
开发者 Python
Python学习九:file操作
这篇文章是关于Python文件操作的详细教程,包括文件的打开、读写、关闭,以及文件备份脚本的编写和文件定位操作。
22 2
|
1月前
|
Python
Python对PDF文件页面的旋转和切割
Python对PDF文件页面的旋转和切割
|
1月前
|
存储 安全 Java
Python File处理详解!
本文详细介绍了Python文件处理的方法及其优缺点。通过`open()`、`read()`、`write()`和`append()`等函数,Python能够轻松实现文件的创建、读取、写入及追加等操作。文章还展示了如何使用`tell()`获取文件指针位置,并提供了涵盖文件创建、读取、追加、重命名及删除的完整示例。Python文件处理不仅功能强大且跨平台兼容,但也存在易错性、安全风险及处理大文件时的性能问题。适合数据存储、配置管理和数据分析等多种应用场景。
43 4
下一篇
无影云桌面