python 文件的基本操作
2021-04-15 09:29
标签:步骤 整数 read with 文件 变量 utf-8 换行符 内存不足 windows:gbk linux:utf-8 Mac-OS:utf-8 f1变量称为文件操作句柄,通常以f1、file_handler、f_h等约定俗成形式存在。 打开文件默认模式为‘r‘,省略mode参数以只读的形式打开该文件。 文件打开之后必须要关闭:f1.close()。 f1.read():整个文件全部一次性读出来。返回值是一个字符串。 f1.readline():按照一行一行读取。带有指针特性,下一次读取会接着上一行后开始读取。 f1.readlines():多行读取,返回一个列表,每个元素是文件中的一行。 使用方法与‘r‘模式一样, f1.write()方法:没有文件时候创建一个文件,如果文件存在就”先清空再写入“内容。 可以使用rb形式读取非文本文件,用wb写入到一个新文件里。 如果指定文件不存在,则先创建文件;如果指定文件已经存在,则直接追加内容。 每次追加并不会自动换行,需要手工添加换行符‘\n‘ with open()方法: 优点一:不用手动关闭文件句柄,它会在结束操作之后的一定时间内关闭。 优点二:一个with可以打开多个文件进行操作 python 文件的基本操作 标签:步骤 整数 read with 文件 变量 utf-8 换行符 内存不足 原文地址:https://www.cnblogs.com/amwkvi/p/13332019.html文件的基本操作
操作系统默认编码
打开文件
f1 = open(‘read.txt‘, encoding=‘utf-8‘,mode=‘r‘)
文件的读:常用读模式 r,rb,r+,r+b……
读取文件模式‘r‘,mode=‘r‘,用于读取文本文件。
★★★ 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‘,用于读取非文本文件。
f1=open(‘1寸照片.jpg‘,mode=‘rb‘) # 不需要加编码模式
print(f1.read())
f1.close()
文件的写:常用写模式 w,wb,w+,w+b
w写模式:mode=‘w‘,用于写入本文文件。
w模式下,只有打开文件的时候清空一次,如果打开文件之后进行多次写入,将以指针位置后开始写入,并不会每次写入都清空文件内容。
f1 = open(‘文件的写练习.txt‘, mode=‘w‘, encoding=‘utf-8‘)
f1.write(‘三好学生就是我‘)
f1.close()
wb写模式:mode=‘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(‘\n文件的读写操作‘)
print(f1.read())
f1.close()
文件操作的其他功能:
对文件句柄的常用操作:read()、read(n)、readline()、readlines()、write……
获取当前文件操作句柄的指针的位置:f1.tell(),返回值是以字节为单位计算的整数。
调整当前文件操作句柄的指针位置:f1.seek(),括号中填写整数,以字节为单位计算。
强制刷新文件:f1.flush(),将缓存中的数据立刻写入文件,同时清空缓存,一般用于close()方法之前,作用为关闭文件前将缓存写入文件。
打开文件的另一种方式:
# 太长语句换行可以直接使用‘\‘符号,解释器在一个语句里遇到这个符号就会知道这行没有结束。
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‘)
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‘)