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##打开Python的大门##python入门#
Python 文章被收录于专栏

Python概述及应用领域,PyCharm、Jupyter notebook的安装与使用,编码规范,标准库、扩展库对象的导入与使用

全部评论

相关推荐

gcniz:一天写两千行你闹呢
点赞 评论 收藏
分享
3 6 评论
分享
牛客网
牛客企业服务