You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#转Python开发者求助:文件写入读取后删除提示正被占用

Python 文件写入、读取后删除的正确实现

你遇到的文件占用问题,根源在于读取文件时没有正确释放文件句柄,另外代码里还有一些不必要的操作,结合你熟悉的C# using 语法,给你整理正确的实现方式:

问题分析

  1. 你的写入代码里,with 语句会自动帮你关闭文件,后面的 f.close() 完全多余,甚至可能引发异常(因为with结束后f已经是关闭状态)。
  2. 读取文件时,你直接open后只调用了read(),没有关闭文件,导致文件句柄被占用,执行os.remove时就会报错。
  3. 代码里缺少import os语句,否则os.remove会直接报错。

正确代码示例

方式一:全程用with语句(推荐,类似C#的using,自动管理资源)

import os

strPath = r"C:\temp\test.txt"

# 写入文件,with自动关闭流
with open(strPath, "xt") as f:
    f.write("XYZ\n")  # 如果你需要换行,加上\n,和C#的WriteLine对应

# 读取文件,同样用with自动释放
with open(strPath, "r") as f:
    strReadFile = f.read()

# 删除文件
os.remove(strPath)

方式二:手动关闭文件(不推荐,容易遗漏)

如果你想手动管理文件句柄,记得读取后一定要关闭:

import os

strPath = r"C:\temp\test.txt"

# 写入
with open(strPath, "xt") as f:
    f.write("XYZ\n")

# 读取后手动关闭
f = open(strPath, "r")
strReadFile = f.read()
f.close()  # 必须调用,释放文件句柄

os.remove(strPath)

补充说明

  • Python的with语句和C#的using作用完全一致,都是自动处理资源释放,所以写入和读取都尽量用with,避免手动管理的失误。
  • 模式"xt"是Python 3.3+新增的,意思是创建新文件写入,如果文件已存在会报错,和C#里StreamWriter默认覆盖不同,如果你需要覆盖已有文件,可以用"wt"模式。

内容的提问来源于stack exchange,提问作者Patrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 07:55:17