文件操作

打开文件的两种方式#

# 方式一
f = open("新建 文本文档.txt", "r", encoding="utf-8")
content = f.read()
print(content)
f.close()

# 方式二
# 用with不需最后.close()
with open("新建 文本文档.txt", "r", encoding="utf-8") as f:
    content = f.read()
    print(content)

读文件(3)#

# read()读全部,如上面代码

# readline()读一行
with open("新建 文本文档.txt", "r", encoding="utf-8") as f:
    content = f.readline()  # 注意:readline()在读的时候会把换行符也读进来,因此会默认换行
    print(content, end="")

    # 当content不为空时
    while content:
        content = f.readline()
        print(content, end="")

# readlines()返回一个包含每行的列表
with open("新建 文本文档.txt", "r", encoding="utf-8") as f:
    content = f.readlines() 
    print(content)  # ['项目经验\n', 'bootstrap + django: 联通day13 + 刷票系统 \n', 'vue + django:\t\t 权限组件 + 供应链 + 车间管理系统\n', 'uniapp: \t\t\t 咸虾米壁纸\n', '\n', '技术栈\n', 'python、django、drf\n', 'bootstrap、vue、element-plus、uni-app\n', 'redis、mysql\n', 'linux\n', 'wireshark']

写文件(4)#

# w会清空之前内容,如果文件不存在会自动创建
# 'w'(文本模式)
with open("新建1.txt", "w", encoding="utf-8") as f:
    f.write("我是第一行\n我是第二行\n我是第三行\n")  # 注意:write()不会自动换行,如换行需手动加\n

# a是追加,如果文件不存在也会自动创建
with open("新建1.txt", "a", encoding="utf-8") as f:
    f.write("我是第一行\n我是第二行\n我是第三行\n")

# r+是读且追加,如果文件不存在也会自动创建
with open("新建1.txt", "r+", encoding="utf-8") as f:
    print(f.readline())  # 读取第一行
    f.write("我是最后一行")
    print(f.readline())  # 打印的是空,我觉得应该是write()与read()共享光标,write()会让光标移动到最后一行,所以为空
# wb(二进制模式)
# 写入的内容是字节(`bytes`对象),如:给文件写入图片

案例-第三行第5个字符处插入"hello word"#

with open("新建文本文档.txt", 'r', encoding='utf-8') as f:
    line_list = f.readlines()  # 返回列表

    # 判断行数是否大于等于3行
    if len(line_list) >= 3:
        # 判断第三行字符个数是否大于等于5(换行是包含在长度内的)
        if len(line_list[2]) >= 5:
            line3 = line_list[2]
            line_list[2] = line3[:4] + "hello word" + line3[4:]  # content[1:4]是左闭右开,content[4:]是左闭右闭,content[:1]是左闭右开
        else:
            print("不足5个")
    else:
        print("不足3行")

# 清空该文件,写入line_list
with open("新建文本文档.txt", 'w', encoding='utf-8') as f:
    f.writelines(line_list)  # writelines()写入一个列表

为啥文件f能循环#

在 Python 中,with open("新建 文本文档.txt", "r", encoding="utf-8") as f:语句打开一个文件并将其赋值给变量f。这里的f实际上是一个可迭代对象。
当对一个文件对象进行迭代时,比如在for i in f:循环中,Python 会逐行读取文件内容。每次迭代,Python 从文件中读取一行内容,并将其作为当前迭代的值赋给变量i,然后继续下一次迭代,直到文件末尾。
这是因为文件对象实现了迭代器协议,它提供了一种方便的方式来逐行处理文件内容,而无需手动跟踪文件指针的位置和读取的行数。
总结来说,f能循环是因为文件对象被设计为可迭代对象,使得可以通过循环方便地逐行读取文件内容。

with open("新建 文本文档.txt", "r", encoding="utf-8") as f:
    for i in f:
        print(i)  # 打印每一行,以字符串形式

作者:cloud-2-jane

出处:https://www.cnblogs.com/cloud-2-jane/articles/18561690

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   一只大学生  阅读(3)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示