提问人:Patrick 提问时间:8/31/2023 更新时间:8/31/2023 访问量:54
如何编写文件然后删除它
How to write a file and then delete it
问:
我是一名 C# 程序员,现在需要使用 python。到目前为止,这是我的第二天。 我需要编写一个文件,读取它,然后删除它。 在 C# 中,这很容易。
string strPath = @"C:\temp\test.txt";
using (StreamWriter writer = new StreamWriter(strPath))
{ writer.WriteLine("XYZ");}
string readText = File.ReadAllText(strPath);
File.Delete(strPath);
流由 using
在python中,我想到了这个:
with open(strPath, "xt") as f:
f.write("XYZ")
f.close()
f = open(strPath, "r")
strReadFile = f.read()
os.remove(strPath)
但尽我所能,我仍然收到错误,告诉我该文件正在使用中。 因此,我用谷歌搜索:“Python 写入、读取和删除文件”,但没有任何结果
谢谢 帕特里克
答:
1赞
Antoine
8/31/2023
#1
在第二个示例中,您需要手动关闭文件,在第一个示例中,上下文处理程序会为您完成此操作。with
with open(strPath, "xt") as f:
f.write("XYZ")
f = open(strPath, "r")
strReadFile = f.read()
f.close()
os.remove(strPath)
两种方式都是有效的。
评论
3赞
B Remmelzwaal
8/31/2023
也可以在读取部分使用上下文处理程序。
0赞
Patrick
8/31/2023
有没有办法更改打开,以便 f.write 可以覆盖文件(如果存在),而不必在 if (file.存在)File.delete ?我知道上面描述的临时文件解决方案会起作用,但我会坚持使用固定文件
2赞
Codist
8/31/2023
@Patrick 只需使用模式“w”打开即可
1赞
Codist
8/31/2023
#2
这里的问题是,如果文件在某个进程中打开,Windows 不会允许您删除文件(或标记为准备删除)。Unix 类型的系统将允许您执行此操作。
这里有两段代码。第一个将在(例如)macOS上运行。第二个将在 Windows 上运行,因此是跨平台兼容的变体。
import os
F = 'foo.txt'
with open(F, 'x') as foo:
foo.write('I am Foo')
with open(F) as foo:
print(foo.read())
os.remove(F)
import os
F = 'foo.txt'
with open(F, 'x') as foo:
foo.write('I am Foo')
with open(F) as foo:
print(foo.read())
os.remove(F)
1赞
AFRobertson
8/31/2023
#3
另一种方法是使用标准库中的 tempfile:
from tempfile import TemporaryFile
with TemporaryFile() as f:
f.write("XYZ")
f.seek(0)
str_read_file = f.read()
此上下文管理器在上下文之后关闭并删除临时文件。
评论