Python文件操作篇
一、内置函数open()
1、概念
2、格式、模式
(1)open(file, mode = 'r' , buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
(2)file参数:要操作的文件名称,当文件不在当前文件夹或子文件夹中,建议用绝对路径
(3)mode参数:打开文件后的处理方式
①衍生模式:'rb'是二进制文件只读模式、'wb'是二进制只写模式
②'r'、'w'、'x'以及衍生模式打开文件时文件指针位于文件头,而'a'、'ab'、‘a+’模式打开文件时文件指针位于文件尾
③注意:'w'和'x'都是写模式,在目标文件不存在时处理结果是一样的,但是通过目标函数已存在,'w'模式会清空原有的内容,而'x'模式会抛出异常
④注意:同时读写,不是用'rw'模式,而是用'r+'、'w+'或'a+'的组合方式('r+'模式要求文件已存在)
(4)encoding参数:指定对文本进行编码和解码的方式,只适用于文本模式,如:GBK、UTF8、CP936
3、执行
(1)执行正常后,open()函数返回1个文件对象
(2)如果指定文件不存在,访问权限不够,磁盘空间不够或其他原因导致创建文件对象失败,则抛出IOError异常
二、文件对象常用方法
注意:read()、readline()、write()方法读写文件时,表示当前位置的文件指针会自动向后移动,并且每次都是从前开始读写
1、read()方法
f = open('itheima.txt', 'r') content = f.read(12) print(content) print("-"*30) content = f.read() print(content) f.close()
2、readline()方法
f = open('itheima.txt', 'r') content = f.readline() print("1:%s"%content) content = f.readline() print("2:%s"%content) f.close()
3、readlines()方法
f = open('itheima.txt', 'r') content = f.readlines() i = 1 for temp in content: print("%d:%s" % (i, temp)) i += 1 f.close()
4、tell()方法
# 打开一个已经存在的文件 f = open("itheima.txt", "r") str = f.read(4) print("读取的数据是 : ", str) # 查找当前位置 position = f.tell() print("当前文件位置 : ", position) str = f.read(8) print("读取的数据是 : ", str) # 查找当前位置 position = f.tell() print("当前文件位置 : ", position) str = f.read(3) print("读取的数据是 : ", str) # 查找当前位置 position = f.tell() print("当前文件位置 : ", position) f.close()
5、seek()方法
f=open("itheima.txt","r") str=f.read(15) print("读取的数据是:",str) #查找当前位置 position=f.tell() print("当前文件的位置是:",position) #重新设置位置 f.seek(4) #查找当前位置 position=f.tell() print("当前文件的位置是:",position) f.close()
三、上下文管理语句with
1、with功能
(1)文件打开失败时,会自动关闭资源
(2)可以自动管理资源,无论什么原因跳出with块,总能保证文件被正确关闭
(3)还可以用于数据库连接、网络连接或类似场合
2、格式
with open(filename, mode ,encoding) as fp: #写通过文件对象fp读写文件内容的语句块
3、代码例子
合并两个.txt文件的内容,两个文件的多行内容交替写入结果文件,如果一个文件内容较少,则把另一个文件的剩余内容写入结果文件尾部
def mergeTxt(txtFiles): with open('result.txt','w',encoding='utf-8') as fp: with open(txtFiles[0]) as fp1,open(txtFiles[1]) as fp2: while True: #交替读取文件1和文件2中的行,写入结果文件 line1 = fp1.readline() if line1: fp.write(line1) else: #如果文件1结束,结束循环 flag = False break line2 = fp2.readline() if line2: fp.write(line2) else: #如果文件2结束,结束循环 flag = True break #获取尚未结束的文件对象 fp3 = fp1 if flag else fp2 #把剩余内容写入结果文件 for line in fp3: fp.write(line) txtFiles = ['1.txt','2.txt'] mergeTxt(txtFiles)
四、JSON文件操作
1、概念:JSON是一种轻量级的数据交换格式
2、使用
(1)dump()函数:把对象序列化为字符串,并直接写入文件
(2)loads()函数:把JSON格式字符串/文件还原为Python对象
3、代码例子
把包含若干房屋信息的列表写入JSON文件,然后再读取并输出这些信息
import json information = [ {'小区名称':'小区A','均价':8000,'月交易量':20}, {'小区名称':'小区B','均价':8500,'月交易量':35}, {'小区名称':'小区C','均价':7800,'月交易量':50}, {'小区名称':'小区D','均价':12000,'月交易量':18} ] with open('房屋信息.json','w') as fp: json.dump(information, fp, indent=4, ensure_ascii=False, separators=[',',':']) with open('房屋信息.json') as fp: information = json.load(fp) for info in information: print(info)
Python概述及应用领域,PyCharm、Jupyter notebook的安装与使用,编码规范,标准库、扩展库对象的导入与使用