首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取和写入文件

读取和写入文件
EN

Stack Overflow用户
提问于 2011-06-14 03:59:24
回答 2查看 951关注 0票数 0

我有一个包含非法字符的XML文件,我正在迭代该文件,从所有行中删除该字符,并将这些行存储在一个列表中。现在,我想将这些相同的行写回到文件中,并覆盖已经存在的内容。

我试过这个:

代码语言:javascript
复制
file = open(filename, "r+")
#do stuff

它只是将结果附加到文件的末尾,所以我想覆盖现有文件。

还有这个:

代码语言:javascript
复制
file = open(filename, "r")
#read from the file
file.close()

file = open(filename, "w")
#write to file
file.close()

这会给我一个坏的文件描述符错误。

如何对同一文件进行读写?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-14 04:04:46

一直附加到文件末尾的原因是,您需要查找到文件的开头,以便将行写出。

代码语言:javascript
复制
with open(filename, "r+") as file:
    lines = file.readlines()

    lines = [line.replace(bad_character, '') for line in lines]

    file.seek(0)
    file.writelines(lines)
    file.truncate()         # Will get rid of any excess characters left at the end of the file due to the length of your new file being shorter than the old one, as you've removed characters.

(我自己决定只使用上下文管理器语法。)

票数 0
EN

Stack Overflow用户

发布于 2011-06-14 04:02:19

你可以用writeline函数重写行列表。

代码语言:javascript
复制
with open(filename, "r") as f:

    lines = f.readlines()

#edit lines here

with open(filename, "w") as f:

    f.writelines(lines)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6335624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档