当前位置:首页>python>【Python小白速通】用with打开文件?说白了就是"给代码配个自动关门的冰箱"!

【Python小白速通】用with打开文件?说白了就是"给代码配个自动关门的冰箱"!

  • 2026-09-26 15:05:39
【Python小白速通】用with打开文件?说白了就是"给代码配个自动关门的冰箱"!

点击蓝字

关注我们

【Python小白速通】用with打开文件?说白了就是"给代码配个自动关门的冰箱"!

咱之前唠过各种Python操作,但处理文件时总怕"翻车"——打开文件忘了关,导致文件被锁、内容丢了;手动关文件又怕代码报错,关文件的代码压根没执行!这时候**with语句打开文件**就成了救星,主打一个"自动善后、绝不翻车"~

简单说,用with打开文件就像用带自动关门的冰箱:打开冰箱拿可乐(打开文件读内容),不管你是喝完直接走,还是中途摔了一跤,冰箱门都会自动关上(文件自动关闭);而不用with的话,就像老式冰箱,拿完可乐得手动关门,忘关了冰箱门敞一夜,耗电还坏东西(文件出问题)!

一、先唠透:啥是with打开文件?(纯人话版)

先掰碎了说,不整专业术语:

- 普通打开文件:用`open()`打开,用完必须手动`close()`,像手动关门的老式冰箱,容易忘关;

- with打开文件:`with open() as 变量名:`,自带"自动关门"buff,代码块执行完不管有没有报错,文件都会自动关闭;

- 核心好处:不用记着关文件、不怕报错导致文件没关、代码更简洁——新手闭眼用,踩坑率直接降为0!

举个栗子:你要整理奶茶店的销量文件,用普通方式打开就像:"打开文件→记销量→手动关文件",万一记到一半接电话忘了关,文件就一直敞着;用with打开就像:"打开文件→记销量→(不管干啥)文件自动关",哪怕记到一半电脑卡了,文件也会乖乖关上,数据一点不丢~

二、实操!3种with打开文件姿势,小白也能秒会

with打开文件的核心格式:`with open(文件路径, 模式) as 变量名:`,咱从最简单的"读文件"开始,代码都标了"人话注释",复制就能跑~

姿势1:最基础的读文件(看内容版)

模式用`'r'`(read,只读),像打开冰箱只拿东西,不往里放,新手先拿捏这个!

python

#准备工作:先在电脑里建一个叫"奶茶销量.txt"的文件,写几行内容:

#珍珠奶茶:20杯

#芋泥奶茶:15杯

#柠檬水:30杯

#用with打开文件读内容(自动关文件,不用写close())

with open("奶茶销量.txt", 'r', encoding='utf-8') as f:

    # 一次性读所有内容

    content = f.read()

    print("📄 奶茶销量文件内容:")

    print(content)

#不用写f.close()!with会自动关,哪怕上面代码报错也会关

👉 运行结果:

📄 奶茶销量文件内容:

珍珠奶茶:20杯

芋泥奶茶:15杯

柠檬水:30杯

姿势2:写文件(填内容版)

模式用`'w'`(write,写入),像打开冰箱放新可乐,注意:`'w'`会清空原有内容,新手别乱试!

python

#用with打开文件写内容(自动关文件)

with open("奶茶新品.txt", 'w', encoding='utf-8') as f:

    # 写入内容,\n是换行

    f.write("葡萄奶茶:18元\n")

    f.write("芒果奶茶:22元\n")

    f.write("生椰拿铁:25元")

print("✅ 新品价格文件已创建并写入内容!")

#去电脑里看,会多出一个"奶茶新品.txt",内容就是上面写的~

👉 运行结果:

✅ 新品价格文件已创建并写入内容!

姿势3:追加内容(加内容版)

模式用`'a'`(append,追加),像打开冰箱往里面加可乐,不会清空原有内容,超实用!

python

#给"奶茶销量.txt"追加当天销量(不用清空原来的)

with open("奶茶销量.txt", 'a', encoding='utf-8') as f:

    # 先换行,再追加内容

    f.write("\n今日新增:")

    f.write("\n杨枝甘露:18杯")

#再读一遍文件,看追加结果

with open("奶茶销量.txt", 'r', encoding='utf-8') as f:

    print("📄 追加后的销量文件:")

    print(f.read())

👉 运行结果:

📄 追加后的销量文件:

珍珠奶茶:20杯

芋泥奶茶:15杯

柠檬水:30杯

今日新增:

杨枝甘露:18杯

三、避坑小彩蛋:新手最容易踩的3个坑

1. 别漏encoding='utf-8':打开/写入含中文的文件,不加这个会乱码!比如文件里的"奶茶"变成"��ȹ",就像冰箱里的可乐冻成冰,根本喝不了~

2. 'w'模式别瞎用:用`'w'`打开已有文件,会直接清空所有内容!比如想改销量文件,用`'w'`打开,原来的20杯、15杯全没了,像往装满可乐的冰箱里倒空水,纯纯败家~

3. 文件路径别写错:比如文件在"桌面/奶茶店"文件夹里,只写`"奶茶销量.txt"`会找不到!正确写法:`"桌面/奶茶店/奶茶销量.txt"`(Windows写`"桌面\\奶茶店\\奶茶销量.txt"`),就像找冰箱得先找对房间,找错了啥也拿不到~

四、with vs 普通open(大白话对比)

| 特点 | with open(自动关门冰箱)| 普通open(手动关门冰箱)|

|------|------------------------|------------------------|

| 关闭文件 | 自动关,无需手动操作 | 必须写f.close(),容易忘 |

| 报错处理 | 哪怕报错,文件也会关 | 报错后,close()不执行,文件敞着 |

| 代码简洁度 | 高(少写一行close())| 低(多一步手动关)|

| 新手友好度 | 极高(几乎不踩坑)| 低(容易忘关、忘写)|

五、实用小技巧:按行读大文件

如果文件超大(比如1000行销量数据),一次性读会卡崩!用with按行读,像一口一口喝奶茶,不呛喉~

python

#按行读大文件,不占内存

with open("奶茶销量.txt", 'r', encoding='utf-8') as f:

    for line in f:

        # 去掉每行末尾的换行符

        line = line.strip()

        print(f"📝 单行销量:{line}")

👉 运行结果:

📝 单行销量:珍珠奶茶:20杯

📝 单行销量:芋泥奶茶:15杯

📝 单行销量:柠檬水:30杯

📝 单行销量:今日新增:

📝 单行销量:杨枝甘露:18杯

总结

1. Python用`with open(文件路径, 模式, encoding='utf-8') as 变量名:`打开文件,核心优势是自动关闭文件,不怕忘关或报错;

2. 读文件用`'r'`、写文件(清空)用`'w'`、追加内容用`'a'`,含中文必加`encoding='utf-8'`;

3. 新手别用`'w'`瞎改已有文件,大文件优先按行读,避开90%的文件操作坑。

扫码关注我们

知识奇妙世界

最新文章

随机文章