文件处理方法-Python

十年热恋 提交于 2020-02-18 05:41:32

1. 文件说明

  • 文件是存储在存储器上的数据序列,在计算机中,所有文件都是以二进制的方式进行存储的,而文件的展示形式一般分为两种:文本形式二进制形式

1.1 文本文件

  • 1.由单一特定编码组成的文件,如utf-8编码。

1.2 二进制文件

  • 1.直接由比特0和1组成的文件,没有统一字符编码。

在二进制文件中,0和1一般根据预定义的格式进行了结构组织,这种结构也就是文件的格式,结构的不同也就代表了文件格式的不同。例如.png,.avi等文件。

无论是文本文件还是二进制文件,在计算机中都是以二进制方式进行存储的,而有统一编码的我们称其为文本文件,没有统一编码的我们称其为二进制文件。不过对于任何类型的文件,我们都可以用二进制的方法进行打开。

2. 文件处理的一般步骤

当我们拿到一个文件时,处理步骤一般分为三步:

  • 1.打开
  • 2.操作
  • 3.关闭

其中第一步打开文件是必不可少的,不打开文件是无法对其进行相关操作的(当然,如果你只是想要进行像删除它之类的操作当我没说),第二步操作是我们处理文件的核心,最后关闭它是为了防止它继续占用我们的内存。

  • 打开文件和关闭文件一般来说都只需要一行代码:
	# 以文本形式打开文件
>>>	tfile = open("file.txt","rt")
	# 以二进制形式打开文件
>>> bfile = open("file.txt","rb")
	# 关闭文件
>>> tfile.close()
>>> bfile.close()

可以看到,在文件的两种状态(存储状态打开状态)之间,通过两个函数open(,)close()来进行转换,对open函数来讲,示例中的两个参数第一个代表文件的路径和名称,当省去路径时必须保证文件和脚本在同一目录下,第二个参数决定了你对文件打开的方式,如rt代表以只读的文本形式打开,rb代表以只读的二进制形式打开,这在后文中将会有详细介绍。

2.1 文件的打开

如上文所讲,文件的打开只需要用到open(,)函数,下面给出这个函数的用法。

  • 格式如下:

<句柄名称> = open( 文件路径及名称 , 打开模式 )

句柄名称即是后续对文件处理的对象,而文件路径及名称上文以及提过,而打开模式跟我们后续处理文件的方法息息相关,简单来说我们想怎么处理文件最好选择相应的打开方法。Python提供了七种相关的打开模式,分别如下:

打开模式 作用
‘r’ 只读模式,程序的默认值,如果文件不存在,返回FileNotFoundError类型错误。
‘w’ 覆盖写模式,文件若不存在则自动创建一个文件,如果文件存在则将其覆盖。
‘x’ 创建写模式,文件若不存在则创建文件,如果文件存在将返回FileExistsError类型错误。
‘a’ 追加写模式,文件若不存在则创建文件,如果文件存在则将内容写入到原文件的后边。
‘b’ 以二进制类型打开文件。
‘t’ 以文本类型打开文件,此为默认值。
‘+’ 与r/w/x/a一同使用,在原功能基础上增加同时读写功能。

2.2 文件的关闭

文件的关闭非常简单,格式如下:

<句柄名称> . close()

2.3 文件内容的读取

在对文件内容进行读取时首先要保证文件以及被打开,而对于读取方法,
Python提供了三个针对文件读取的函数:

读取方法 作用
<句柄>.read(size=-1) 读入全部内容,如果给出参数,则读入前size长度
<句柄>.readline(size=-1) 读入一行内容,如果给出参数,则读入该行的前size长度
<句柄>.readlines(hint=-1) 读入文件的所有行,以每行为元素形成列表,如果给出参数,则读入前hint

2.4 数据的文件写入

对文件内容的读取来讲,我们是将文件中的内容读取出来然后进行我们的操作,不影响原文件,而对文件内容的写入来讲,是我们之间在文件上进行操作,不过要注意对文件以写方式打开
Python也提供了三个针对文件写入的函数:

写入方法 作用
<句柄>.write(s) 向文件写入一个字符串或者字节流
<句柄>.writelines(lines) 将一个元素全为字符串的列表写入文件
<句柄>.seek(offset) 改变当前文件操作指针的位置,offset参数:0、1、2分别代表文件开头、当前位置、文件结尾。
  • 对于seek函数,它的作用是改变当前文件操作指针的位置,它的用处是什么呢?举个小例子:
	#首先以文本状态和覆盖写模式打开一个文件
>>>	newfile	=	open('a_flie.txt','wb+')	
	#建立一个列表
>>>	a_list	=	['Keep calm',' and ','carry on',' !']
>>>	newfile.writelines(a_list)
>>>	for line in newfile:
		print(line)
>>>	newfile.close()
这段代码在运行之后会生成一个'a_file.txt'文件,里边写着'Keep calm and carry on !',
而在解释器中却并没有打印这个字符串,这是因为在文件写入完成后,指针位置在文件的最后方,
而'for in'的遍历方法是从指针位置向文件最后方遍历,因此遍历的结果是空,这个时候如果想要
使用遍历的方法打印写入的字符串,就需要用到'seek'函数,如下:
	#首先以文本状态和覆盖写模式打开一个文件
>>>	newfile	=	open('a_flie.txt','wb+')	
	#建立一个列表
>>>	a_list	=	['Keep calm',' and ','carry on',' !']
>>>	newfile.writelines(a_list)
	#将文件指针转移到文件头部再进行遍历
>>> newfile.seek(0)
>>>	for line in newfile:
		print(line)
>>>	newfile.close()
	#输出结果
>>>	Keep calm and carry on !

3. 总结

  • 本文简单的对文件出处理做了一些相关介绍,知识点很少,只要多练习一下就能熟练掌握,至于更高级的数据文件处理方法没有涉及,不过不要急,要Keep calm and carry on !
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!