首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >f.write有问题吗?它只在文件中写入最后一行吗?

f.write有问题吗?它只在文件中写入最后一行吗?
EN

Stack Overflow用户
提问于 2021-11-20 11:22:47
回答 2查看 48关注 0票数 0

所以我必须创建一个4-1和9-3在每一行的文件。在那之后,我需要对每个数字做减法。我已经做了一些事情,但是只有第2行的结果。所以在izrazi.txt中是我的输入4-1和9-3,所以我在izlaz.txt中的输出必须是4-1 =3,在新行9-3 =6

代码语言:javascript
运行
复制
with open('izrazi.txt','w') as f: 
    f.write("4-1\n9-3") 
    
with open('izrazi.txt','r') as f:
    lines = f.readlines()
    for l in lines:
        if l[1] == "-":
            rezultat = (l + "=" + str(int(l[0]) - int(l[2])))
        
with open("izlaz.txt", "w") as f2:
    f2.write(rezultat)
EN

回答 2

Stack Overflow用户

发布于 2021-11-20 11:37:57

您必须在for循环外部声明变量'rezultat‘,在循环内部使用'+=’运算符而不是'=‘。

如下所示更改您的代码:

代码语言:javascript
运行
复制
rezultat = ''
for l in lines:
    if l[1] == "-":
        rezultat += (l.replace('\n','') + "=" + str(int(l[0]) - int(l[2])) + '\n')
票数 0
EN

Stack Overflow用户

发布于 2021-11-20 11:45:41

您的代码无法正常工作,因为您在每次循环后都会覆盖results变量。

因此,只有在最终循环之后的result变量的值被保存到文件中。

您可以通过将rezultat设置为list来修复此问题。

代码语言:javascript
运行
复制
with open('izrazi.txt','w') as f: 
    f.write("4-1\n9-3") 
    
with open('izrazi.txt','r') as f:
    lines = f.readlines()

    rezultat = []
    for l in lines:
        if l[1] == "-":
            rezultat.append(f"{l}={int(l[0]) - int(l[2])}")
        
with open("izlaz.txt", "w") as f2:
    f2.write('\n'.join(rezultat))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70045446

复制
相关文章

相似问题

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