Python文件操作篇

目录

一、内置函数open()

1、概念

2、格式、模式

3、执行

二、文件对象常用方法

1、read()方法

2、readline()方法

3、readlines()方法

4、tell()方法

5、seek()方法

三、上下文管理语句with

1、with功能

2、格式

3、代码例子

四、JSON文件操作

1、概念

2、使用

3、代码例子


一、内置函数open()

1、概念

使用指定模式打开指定文件并创建文件对象

2、格式、模式

(1)open(file, mode = 'r' , buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

(2)file参数:要操作的文件名称,当文件不在当前文件夹或子文件夹中,建议用绝对路径

(3)mode参数:打开文件后的处理方式

文件打开模式
模式说明
r读模式(默认模式,可省略),如果文件不存在,抛出异常
w写模式,如果文件已存在,先清空原有内容,如果不存在,创建新文件
x写模式,创建新文件,如果文件已存在,则抛出异常
a追加模式,不覆盖文件中原有内容
b二进制模式(可与r、w、x或a模式组合使用,如:对图片的读写),打开文件时不允许指定参数encoding
t文本模式(默认模式,可省略)
+读、写模式(可与其他模式组合使用)

衍生模式:'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异常


二、文件对象常用方法

文件对象的常用方法
方法功能
close()把缓冲区的内容写入文件,同时关闭文件,释放文件对象
read([size])从文本文件中 / 二讲制文件中读取并返回size个字符 / 字节,省略size参数表示读取文件中全部内容
readline()从文本文件中读取并返回一行内容
readlines()返回包含文本文件中每行内容的列表
seek(cookie,whence=0,/)定位文件指针,把文件指针移动到相对于 whence的偏移量为cookie的位置。其中 whence为0表示文件头,1表示当前位置,2表示文件尾。对于文本文件,whence=2 时cookie必须为0;对于二进制文件,whence=2时 cookie可以为负数;不指定时,默认为0
write(s)把s的内容写入文件,如果写入文本文件则s应为字符串;如果写入二进制文件则s应为字节串
writelines(s)列表s中的所有字符串写入文本文件,但并不在s中每个字符串后面自动增加换行符。也就是说,如果想让s中的每个字符串写入文本文件时各占一行,应自己编写每个字符串以换行符结束

注意: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)

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五秒法则

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值