龙空技术网

使用Python 3.6进行处理文件,文件的创建和读取代码实解

dwolf79 2742

前言:

今天小伙伴们对“读取代码意思”可能比较关切,各位老铁们都想要知道一些“读取代码意思”的相关内容。那么小编同时在网摘上网罗了一些对于“读取代码意思””的相关知识,希望大家能喜欢,同学们一起来学习一下吧!

使用Python处理文件

数据的存储可以使用数据库,也可以使用文件。数据库保持了数据的完整性和关联性,而且使数据更安全、可靠。使用文件存储数据则非常简单、易用,不必安装数据库管理系统等运行环境。文件通常用于存储应用软件的参数或临时性数据。Python的文件操作和Java的文件操作十分相似,Python提供了os、os.path等模块处理文件。

文件的常见操作

文件通常用于存储数据或应用系统的参数。Python提供了os、os.path、shutil等模块处理文件,其中包括打开文件、读写文件、复制和删除文件等函数。

文件的创建

Python3中移除了全局的file()函数,还保留了open()函数。文件的打开或创建可以使用函数open()。该函数可以指定处理模式,设置打开的文件为只读、只写或可读写状态。open()的声明如下所示。

open(file, mode='r', buffering=-1, encoding=None,

errors=None, newline=None, closefd=True, opener=None) -> file object

【代码说明】

参数file是被打开的文件名称。如果文件file不存在,open()将创建名为name的文件,然后再打开该文件。

参数mode是指文件的打开模式。文件的打开模式如表7-1所示。

参数buffering设置缓存模式。0表示不缓存;1表示行缓冲;如果大于1则表示缓冲区的大小,以字节为单位。

open()返回1个file对象,file对象可以对文件进行各种操作。

注意 对于图片、视频等文件必须使用“b”的模式读写。

file类用于文件管理,可以对文件进行创建、打开、读写、关闭等操作。file类的常用属性和方法如下表:

文件的处理一般分为以下3个步骤:

1)创建并打开文件,使用file()函数返回1个file对象。

2)调用file对象的read()、write()等方法处理文件。

3)调用close()关闭文件,释放file对象占用的资源。

注意 close()方法是必要的。虽然Python提供了垃圾回收机制,清理不再使用的对象,但是手动释放不再需要的资源是一种良好的习惯。同时也显式地告诉Python的垃圾回收器:该对象需要被清除。

下面这段代码演示了文件的创建、写入和关闭操作。

# 创建文件

context = '''hello world'''

file = open('hello.txt', 'w') # 打开文件

file.write(context) # 把字符串写入文件

file.close() # 关闭文件

【代码说明】

第3行代码调用open()创建文件hello.txt,设置文件的访问模式为“w”。open()返回文件对象f。

第4行代码把变量context的值写入文件hello.txt。

第5行代码调用对象f的close()方法,释放对象f占用的资源。

文件的读取

文件的读取有多种方法,可以使用readline()、readlines()或read()函数读取文件。下面将一一介绍这些函数读取文件的实现方法。

1.按行读取方式readline()

readline()每次读取文件中的一行,需要使用永真表达式循环读取文件。但当文件指针移动到文件的末尾时,依然使用readline()读取文件将出现错误。因此程序中需要添加1个判断语句,判断文件指针是否移动到文件的尾部,并且通过该语句中断循环。

下面这段代码演示了readline()的使用。

编辑测试文件为:

# cat hello.txt

hello world

hello China

# 使用readline()读文件

f = open('hello.txt')

while True:

line0 = f.readline(2)

if line0:

print(line0)

else:

break

f.close()

print('---------------------------')

print('由于hello.txt刚才被打开读取完成,所以这里需要重新打开文件,重头读取文件。')

print('---------------------------')

f = open('hello.txt')

while True:

line1 = f.readline()

if line1:

print(line1)

else:

break

f.close()

【代码说明】

第3行代码使用了“Ture”作为循环条件,构成1个永真循环。

第4行代码并不表示每行只读取2个字节的内容,而是指每行每次读2个字节,直到行的末尾。

第18行代码调用readline(),读取hello.txt文件的每一行。

第19行代码,判断变量line是否为真。如果为真,则输出当前行的内容;否则,退出循环。

2.多行读取方式readlines()

使用readlines()读取文件,需要通过循环访问readlines()返回列表中的元素。

函数readlines()可一次性读取文件中多行数据。

下面这段代码演示了readlines()读取文件的方法:

# 使用readlines()读文件

f = open('hello.txt')

lines = f.readlines()

for line in lines:

print(line)

f.close()

【代码说明】

第3行代码调用readlines(),把文件hello.txt中所有的内容存储在列表lines中。

第4行代码循环读取列表lines中的内容。

第5行代码输出列表lines每个元素的内容,即文件hello.txt每行的内容。

第6行代码手动关闭文件。

3.一次性读取方式read()

读取文件最简单的方法是使用read(),read()将从文件中一次性读出所有内容,并赋值给1个字符串变量。

下面这段代码演示了read()读取文件的方法:

# 使用read()读文件

f = open("hello.txt")

context = f.read()

print(context)

f.close()

【代码说明】

第3行代码调用read(),把文件hello.txt中所有的内容存储在变量context中。

第4行代码输出所有文件内容。

可以通过控制read()参数的值,返回指定字节的内容。

f = open('hello.txt')

context = f.read(5) # 读取文件前5个字节的内容

print(context)

print(f.tell()) # 返回文件对象当前指针位置

context = f.read(5) # 继续读取5个字节内容

print(context)

print(f.tell())

f.close()

【代码说明】

第2行代码调用read(5),读取hello.txt文件中前5个字节的内容,并存储到变量context中。此时文件的指针移到第5个字节处。

第3行代码输出变量context的结果,输出的结果为“hello”。

第4行代码调用tell(),输出当前文件指针的位置:5。

第5行代码再次调用read(5),读取第6个字节到第10个字节的内容。

第6行代码输出结果为“worl”。

第7行代码输出当前文件指针的位置:10。

注意 file对象内部将记录文件指针的位置,以便下次操作。只要file对象没有执行close()方法,文件指针就不会释放。

标签: #读取代码意思