Python全栈开发之文件操作
admin
2023-07-19 06:22:20
0

No.1 文件的概念

文件的概念和作用

计算机中的文件,就是存储在某种长期储存设备上的一段数据流

计算机中的文件,可以在需要的时候使用

文件的存储方式

文本文件

可以使用文本编辑器查看

本质上还是二进制文件

二进制文件

保留的内容不能直接查看,而是提供给其他软件查看

图片、音频、视频等都是二进制文件

No.2 文件的基本操作

操作文件的基本套路

打开文件

读写文件

关闭文件

操作文件的函数

函数 说明
fp.read([size]) size为读取的长度,以byte为单位
fp.readline([size]) 读一行,如果定义了size,有可能返回的只是一行的一部分
fp.readlines([size]) 把文件每一行作为一个list的一个成员,并返回这个list
fp.write(str) 把str写到文件中,write()并不会在str后加上一个换行符
p.writelines(seq) 把seq的内容全部写到文件中(多行一次性写入)
fp.close() 关闭文件
fp.flush() 把缓冲区的内容写入硬盘
fp.fileno() 返回一个长整型的文件标签
fp.tell() 返回文件操作标记的当前位置,以文件的开头为原点
fp.next() 返回下一行,并将文件操作标记位移到下一行
fp.seek(offset[,whence]) 将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数, whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算

read方法——读取文件

f = open('manage.py','r',encoding='utf-8')
print(f.tell())
text = f.read()
print(text)
f.close()

文件指针表示从哪个位置开始读取数据

第一次打开文件时,指针指向文件的开始位置

当执行了read方法后,指针指向文件的末尾,再次调用不会读取到任何内容

打开文件的方式

模式 说明
r 以只读方式打开文件,文件的指针将会放在文件的开头,这是默认模式,如果文件不存在,抛出异常
w 以只写方式打开文件,如果文件存在会被覆盖,如果文件不存在,创建新文件
a 以追加方式打开文件,如果该文件已存在,文件指针将会放在文件的结尾,如果文件不存在,创建新文件进行写入
r+ 以读写方式打开文件,文件的指针将会放在文件的开头,如果文件不存在,抛出异常
w+ 以读写方式打开文件,如果文件存在会被覆盖,如果文件不存在,创建新文件
a+ 以读写方式打开文件,如果该文件已存在,文件指针将会放在文件的结尾,如果文件不存在,创建新文件进行写入

逐行读取

read方法默认会把文件的所有内容一次性读入到内存中

如果文件过大,对内存的占用非常恐怖

readline方法可以一次读取一行内容

方法执行后,会把文件的指针指向下一行

复制文件

小文件复制

打开一个文件,读取全部内存,并写入到另一个文件中

# 1. 打开文件
file_read = open("README")
file_write = open("README.bak", "w")

# 2. 读取并写入文件
text = file_read.read()
file_write.write(text)

# 3. 关闭文件
file_read.close()
file_write.close()

大文件复制

# 1. 打开文件
file_read = open("README")
file_write = open("README.bak", "w")

# 2. 读取并写入文件
while True:
    # 每次读取一行
    text = file_read.readline()

    # 判断是否读取到内容
    if not text:
        break

    file_write.write(text)

# 3. 关闭文件
file_read.close()
file_write.close()

No.3 文件/目录的常用管理操作

在终端/资源管理器、 中可以执行常规的文件/目录管理操作 ,如果希望通过代码来实现,需要导入os模块

文件操作

方法 说明 示例
rrename 重命名文件 os.rename(文件名)
remove 删除文件 os.remove(文件名)

目录操作

方法 说明 示例
listdir 目录列表 os.listdir(目录名)
mkdir 创建目录 os.mkdir(目录名)
rmdir 删除目录 os.rmdir(目录名)
getcwd 获取当前目录 os.getcwd()
chdir 修改工作目录 os.chdir(目标目录)
path.isdir 判断是否是文件 os.path.isdir(文件路径)

No.4 文本文件的编码转换

Python全栈开发之文件操作

No.5 with上下文管理

with open("demo","r",encoding="utf-8") as f: #自动关闭并释放文件资源
    for line in f:
        print(line)

with open("demo","r",encoding="utf-8") as f,\
     open("demo.bak","w",encoding="utf-8") as f2:
    for line in f:
        print(line)
        f2.write(line)

相关内容

热门资讯

凤凰记者:美伊最大分歧没消失 美伊双方将核问题列为后续谈判事项,而非同步解决。美伊本次达成的谅解备忘录真的可以一劳永逸吗?凤凰卫视...
原创 朱... 北京时间2026年6月9日16时23分,东风商业航天创新试验区的天空划过一道惊艳轨迹——朱雀二号改进...
毕业季4款热门中端机盘点,总有... 高考完终于可以好好挑手机啦! 最近这几款新出的中端机都挺火,给大家简单盘一盘, 看看哪款更适合你~~...
大数据行业破局指南:瞄准低内卷... 一、避开互联网红海,精准锚定“低内卷、高紧缺”的细分赛道 0-1 年入局大数据行业,切忌盲目扎堆纯互...
敏感时刻特朗普对内塔尼亚胡大发... 【环球网报道】据美国《纽约时报》等媒体报道,美国总统特朗普当地时间6月14日在接受媒体采访时多次严厉...
凤凰记者:美伊协议是阶段性降温... 特朗普称与伊朗的协议已经达成,美国方面有哪些最新动态?美国各界对达成协议有哪些反应?凤凰卫视驻纽约记...
智能周报|AI自进化进程已开启 来源:第一财经YiMagazine 模型与应用 微信开放AI生态接入,可自动化微信生态内的小程序 6...
充电枪模式二双工位测试设备厂家... 导语:新能源充电设备测试环节中,模式二充电枪功能测试需兼顾效率与精度,尤其在高产能产线中,双工位测试...
三星罢工的全球回响 5月27日上午,一场牵动全球半导体神经的投票落下帷幕。 据央视新闻报道,三星电子内部投票结果于当天公...
原创 曾... “宁王”为何总与同行打官司? 作者 | 于婞 武丽娟 编辑丨高岩 来源 | 野马财经 宁德时代(30...