Python学习之IO 编程 —— 文件读写

最近开始整理python的资料,博主建立了一个qq群,希望给大家提供一个交流的平台 78486745 。

Python 文件读写

Python内置了读写文件的函数,用法和C是兼容的。本节介绍内容有:文件的打开/关闭、文件对象、文件的读写等。

本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件读写,也需要注意编码问题;其他文件的读写及编码相关详见其他专题。

文件的打开/关闭

open()、close()

看以下示例就能了解 Python 的 open()close() 函数。这边调用 read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示,具体使用参见下文。

Python 操作 打开及关闭方式 如下:

file_test = "test.txt"
f = open(file_test,'r')
print(f.read())
f.close()

注意 open() 之后 一定要 close()。但由于文件读写时都可能产生IOError,为了保证无论是否出错都能正确地关闭文件,我们用 try ... finally 来实现:

file_test = "test.txt"
try:
	f = open(file_test,'r')
	print(f.read())
finally:
	if f:
		f.close()

python 简化了该写法,即用 with open(...) as ... ; 建议之后文件读写都用该写法:

file_test = "test.txt"
with open(file_test,'r') as f:
	print(f.read())

在上面的例子中,你肯定注意到了参数 “r”;该参数决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读®。

模式 描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

File 对象

file 读取后返回一个对象类型,它有一些内置属性,如下:

file_test = "test.txt"
with open(file_test,'r') as f:
    print(f)
    print(f.closed,f.mode,f.encoding,f.name,f.newlines)
文件对象属性 描 述
file.closed 表示文件已经被关闭,否则为False
file.mode Access文件打开时使用的访问模式
file.encoding 文件所使用的编码
file.name 文件名
file.newlines 未读取到行分隔符时为None,只有一种行分隔符时为一个字符串,当文件有多种类型的行结束符时,则为一个包含所有当前所遇到的行结束的列表

不同的读取函数:read()、read(size)、readline()、readlines()

之前的例子已经接触到了 read() 函数,该函数会会一次性读取文件的全部内容,如果能确保文件的大小,自然可以。但若文件过大,内存就爆了,所以,可以反复调用read(size)方法,每次最多读取size个字节的内容;也可调用 readline() 每次读取一行内容;而调用readlines()可以一次读取所有内容并按行返回list。总之,根据需求来。仅以 txt 文件为例,其他的文件读取需要特殊处理;另外,文件的格式编码方式也需要注意。

file_test = "test.txt"
with open(file_test,'r') as f:
    print(f.read())

print('#----')

f = open(file_test)
content = ""
try:
    while True:
        chunk = f.read(3)
        print(chunk)
        if not chunk:
            break
        content += chunk
finally:
    f.close()

print(content)

print('#----')

#readline读取的每行包括换行符
f = open(file_test)
while 1:
    line = f.readline()
    if not line:
        f.close()
        break
    print(line)

print('#----')

#readlines读取的每行包括换行符
with open(file_test,'r') as f:
    poet_list = f.readlines()

print(type(poet_list))

for i in poet_list:
    print(i)

写文件,write()

写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符’w’或者’wb’表示写文本文件或写二进制文件;‘a’ 对应的表示追加等。

如下示例,由于 write.txt 文件不存在,创建该文件并写入:
在这里插入图片描述

在上例基础上,继续,该文件被重写:
在这里插入图片描述

继续,这次使用追加,会在文件结尾追加:
在这里插入图片描述

【搜索圆方圆,获得“python教程”,“python下载”,“python入门”类相关信息。】

猜你喜欢

转载自blog.csdn.net/tianlalua/article/details/88081678