首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通读文件并写入我刚刚读到的行

通读文件并写入我刚刚读到的行
EN

Stack Overflow用户
提问于 2014-04-05 07:52:11
回答 2查看 74关注 0票数 1

所以我想要读完一个文件,检查每一行,看看它是否包含我要查找的字符串的一部分。一旦我找到了正确的行,我就想在文件中重写该行。

这是我到目前为止所知道的:

代码语言:javascript
运行
复制
f = open("playlist.py", "r+")
for line in f:
    if old in line:
        f.write("    " + str(item) + ":" + " " + 
                "\""  + new_text + "\"") 
        f.close()
        break
f.close()

这段代码找到了正确的行,但是写到了文件的末尾。我认为读和写iter应该是共享的,但我猜不是:(

EN

回答 2

Stack Overflow用户

发布于 2014-04-05 13:10:36

使用fileinput

代码语言:javascript
运行
复制
import fileinput

for line in fileinput.input("test.txt", inplace=True):
    if contains_str_youlookingfor:  
        print "what_you_want_to_rewire"
    else:
        print line.rstrip()
fileinput.close()

如果你使用的是Python 3.2+,最好使用上下文管理器:

代码语言:javascript
运行
复制
with fileinput.input("test.txt", inplace=True) as f:    
    for line in f:
        if contains_str_youlookingfor:  
            print("what_you_want_to_rewire")
        else:
            print(line, end='')

这些行将被"what_you_want_to_rewire"替换,并且不会创建任何新文件。

编辑

如果不删除原始换行符或在不换行符的情况下打印,则会得到额外的空行。

票数 1
EN

Stack Overflow用户

发布于 2014-04-05 09:21:49

您是否可以使用r+模式打开文件,然后将内容读取到列表中,并替换包含所需数据的行(列表项),然后将整个文件写回仍处于打开状态的文件?像这样的东西

代码语言:javascript
运行
复制
f=open(filename, 'r+')
data=f.readlines()
for line in data:
    if old in line:
        line="    " + str(item) + ":" + " " + 
            "\""  + new_text + "\""
f.truncate()
f.writelines(data)
f.close()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22874858

复制
相关文章

相似问题

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