(五)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 文件,指针会移动到末尾处,写入的内容将追加到该文件中,但是必须关闭文件才能生效。


目录
相关文章
|
11天前
|
机器学习/深度学习 存储 算法
解锁文件共享软件背后基于 Python 的二叉搜索树算法密码
文件共享软件在数字化时代扮演着连接全球用户、促进知识与数据交流的重要角色。二叉搜索树作为一种高效的数据结构,通过有序存储和快速检索文件,极大提升了文件共享平台的性能。它依据文件名或时间戳等关键属性排序,支持高效插入、删除和查找操作,显著优化用户体验。本文还展示了用Python实现的简单二叉搜索树代码,帮助理解其工作原理,并展望了该算法在分布式计算和机器学习领域的未来应用前景。
|
21天前
|
监控 网络安全 开发者
Python中的Paramiko与FTP文件夹及文件检测技巧
通过使用 Paramiko 和 FTP 库,开发者可以方便地检测远程服务器上的文件和文件夹是否存在。Paramiko 提供了通过 SSH 协议进行远程文件管理的能力,而 `ftplib` 则提供了通过 FTP 协议进行文件传输和管理的功能。通过理解和应用这些工具,您可以更加高效地管理和监控远程服务器上的文件系统。
51 20
|
27天前
|
存储 数据采集 数据处理
如何在Python中高效地读写大型文件?
大家好,我是V哥。上一篇介绍了Python文件读写操作,今天聊聊如何高效处理大型文件。主要方法包括:逐行读取、分块读取、内存映射(mmap)、pandas分块处理CSV、numpy处理二进制文件、itertools迭代处理及linecache逐行读取。这些方法能有效节省内存,提升效率。关注威哥爱编程,学习更多Python技巧。
|
28天前
|
存储 JSON 对象存储
如何使用 Python 进行文件读写操作?
大家好,我是V哥。本文介绍Python中文件读写操作的方法,包括文件读取、写入、追加、二进制模式、JSON、CSV和Pandas模块的使用,以及对象序列化与反序列化。通过这些方法,你可以根据不同的文件类型和需求,灵活选择合适的方式进行操作。希望对正在学习Python的小伙伴们有所帮助。欢迎关注威哥爱编程,全栈路上我们并肩前行。
|
1月前
|
存储 算法 Serverless
剖析文件共享工具背后的Python哈希表算法奥秘
在数字化时代,文件共享工具不可或缺。哈希表算法通过将文件名或哈希值映射到存储位置,实现快速检索与高效管理。Python中的哈希表可用于创建简易文件索引,支持快速插入和查找文件路径。哈希表不仅提升了文件定位速度,还优化了存储管理和多节点数据一致性,确保文件共享工具高效运行,满足多用户并发需求,推动文件共享领域向更高效、便捷的方向发展。
|
2月前
|
计算机视觉 Python
如何使用Python将TS文件转换为MP4
本文介绍了如何使用Python和FFmpeg将TS文件转换为MP4文件。首先需要安装Python和FFmpeg,然后通过`subprocess`模块调用FFmpeg命令,实现文件格式的转换。代码示例展示了具体的操作步骤,包括检查文件存在性、构建FFmpeg命令和执行转换过程。
76 7
|
4月前
|
自然语言处理 数据处理 Python
python操作和解析ppt文件 | python小知识
本文将带你从零开始,了解PPT解析的工具、工作原理以及常用的基本操作,并提供具体的代码示例和必要的说明【10月更文挑战第4天】
678 60
|
4月前
|
安全 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文件供直接导入使用。
146 3
python知识点100篇系列(15)-加密python源代码为pyd文件
|
4月前
|
Linux 区块链 Python
Python实用记录(十三):python脚本打包exe文件并运行
这篇文章介绍了如何使用PyInstaller将Python脚本打包成可执行文件(exe),并提供了详细的步骤和注意事项。
185 1
Python实用记录(十三):python脚本打包exe文件并运行
|
3月前
|
开发者 Python
Python中__init__.py文件的作用
`__init__.py`文件在Python包管理中扮演着重要角色,通过标识目录为包、初始化包、控制导入行为、支持递归包结构以及定义包的命名空间,`__init__.py`文件为组织和管理Python代码提供了强大支持。理解并正确使用 `__init__.py`文件,可以帮助开发者更好地组织代码,提高代码的可维护性和可读性。
178 2

热门文章

最新文章

推荐镜像

更多