python 文件的基本操作
Posted amwkvi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 文件的基本操作相关的知识,希望对你有一定的参考价值。
文件的基本操作
操作系统默认编码
-
windows:gbk
-
linux:utf-8
-
Mac-OS:utf-8
-
打开文件
-
f1 = open(‘read.txt‘, encoding=‘utf-8‘,mode=‘r‘)
f1变量称为文件操作句柄,通常以f1、file_handler、f_h等约定俗成形式存在。
打开文件默认模式为‘r‘,省略mode参数以只读的形式打开该文件。
-
文件打开之后必须要关闭:f1.close()。
-
-
文件的读:常用读模式 r,rb,r+,r+b……
-
读取文件模式‘r‘,mode=‘r‘,用于读取文本文件。
-
f1.read():整个文件全部一次性读出来。返回值是一个字符串。
-
f1.readline():按照一行一行读取。带有指针特性,下一次读取会接着上一行后开始读取。
-
f1.readlines():多行读取,返回一个列表,每个元素是文件中的一行。
-
★★★ for:以遍历文件句柄的方式循环读取全部文件内容,表现形式等于readlines()方法返回的列表。但有很大的不同,在读取大型巨型文件时候,read()和readlines()方法会直接将整个文件读取进电脑内存,这将会导致内存不足;而for循环读取大型文件时,单次循环时间内只有文件内的一行内容占用内存,进入下个循环即释放上一行内容。
f1 = open(‘文件的操作练习.txt‘, mode=‘r‘, encoding=‘utf-8‘) for line in f1: print(line, end=‘‘) f1.close()
-
-
读取文件模式‘rb‘,mode=‘rb‘,用于读取非文本文件。
-
使用方法与‘r‘模式一样,
f1=open(‘1寸照片.jpg‘,mode=‘rb‘) # 不需要加编码模式 print(f1.read()) f1.close()
-
-
-
文件的写:常用写模式 w,wb,w+,w+b
-
w写模式:mode=‘w‘,用于写入本文文件。
-
f1.write()方法:没有文件时候创建一个文件,如果文件存在就”先清空再写入“内容。
w模式下,只有打开文件的时候清空一次,如果打开文件之后进行多次写入,将以指针位置后开始写入,并不会每次写入都清空文件内容。
f1 = open(‘文件的写练习.txt‘, mode=‘w‘, encoding=‘utf-8‘) f1.write(‘三好学生就是我‘) f1.close()
-
-
wb写模式:mode=‘wb‘,用于写入非文本文件。
-
可以使用rb形式读取非文本文件,用wb写入到一个新文件里。
f1 = open(‘cat.jpg‘, mode=‘rb‘) photo=f1.read() f1.close() f2=open(‘cat1.jpg‘,mode=‘wb‘) f2.write(photo) f2.close()
-
-
-
文件的追加:常用模式 a,ab,a+,a+b
-
a 追加模式:mode=‘a‘,用于追加写入文本文件。
如果指定文件不存在,则先创建文件;如果指定文件已经存在,则直接追加内容。
每次追加并不会自动换行,需要手工添加换行符‘ ‘
f1=open(‘文件的追加‘,mode=‘a‘,encoding=‘utf-8‘) f1.write(‘情景剧剧本《爱的守护》‘) f1.close()
-
-
文件操作的其他模式:r+,w+
-
r+ 模式:读写,先读后追加。
该操作对象需要已经存在,不存在指定文件将报错。
写操作时,是在文件指针位置开始写入,并不是清空再写。
操作文件指针方法:f1.seek(),指定文件指针所在位置。
f1=open(‘文件的追加‘,mode=‘r+‘,encoding=‘utf-8‘) print(f1.read()) f1.write(‘ 文件的读写操作‘) print(f1.read()) f1.close()
-
-
文件操作的其他功能:
-
对文件句柄的常用操作:read()、read(n)、readline()、readlines()、write……
-
获取当前文件操作句柄的指针的位置:f1.tell(),返回值是以字节为单位计算的整数。
-
调整当前文件操作句柄的指针位置:f1.seek(),括号中填写整数,以字节为单位计算。
-
强制刷新文件:f1.flush(),将缓存中的数据立刻写入文件,同时清空缓存,一般用于close()方法之前,作用为关闭文件前将缓存写入文件。
-
-
打开文件的另一种方式:
-
with open()方法:
-
优点一:不用手动关闭文件句柄,它会在结束操作之后的一定时间内关闭。
-
优点二:一个with可以打开多个文件进行操作
# 太长语句换行可以直接使用‘‘符号,解释器在一个语句里遇到这个符号就会知道这行没有结束。 with open(‘文件的追加‘,mode=‘r‘,encoding=‘utf-8‘) as f1, open(‘文件的操作练习.txt‘,encoding=‘utf-8‘) as f2: print(f1.read()) print(f2.name)
-
-
-
文件的修改操作:
-
文件修改的标准步骤:
-
以读的模式打开原文件。
-
以写的模式创建一个新文件。
-
将原文件的内容读出来修改成新内容,写入新文件。
-
将原文件删除。
-
将新文件重命成原文件。
- 一次性读取到内存,进行替换内容修改:
import os with open(‘文件的操作练习.txt‘,encoding=‘utf-8‘) as f1, open(‘文件的操作练习.bak‘,mode=‘w‘,encoding=‘utf-8‘) as f2: old_file=f1.read() new_file=old_file.replace(‘Mr.H‘,‘H.X‘) f2.write(new_file) os.remove(‘文件的操作练习.txt‘) os.rename(‘文件的操作练习.bak‘,‘文件的操作练习.txt‘)
- 使用for循环读取文件内容进行修改:
with open(‘文件的操作练习.txt‘,encoding=‘utf-8‘) as f1, open(‘文件的操作练习.bak‘,mode=‘w‘,encoding=‘utf-8‘) as f2: for line in f1: new_line=line.replace(‘amwkvi‘,‘Mr.H‘) f2.write(new_line) os.remove(‘文件的操作练习.txt‘) os.rename(‘文件的操作练习.bak‘,‘文件的操作练习.txt‘)
-
-
以上是关于python 文件的基本操作的主要内容,如果未能解决你的问题,请参考以下文章