首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fr.write()似乎写了很多行,而不是我想要的

问Fr.write()似乎写了很多行,而不是我想要的
EN

Stack Overflow用户
提问于 2022-07-29 04:03:00
回答 1查看 44关注 0票数 0

当我在里面的时间键显示它已经过期时,我试图删除一个特定的行。问题是,当它调用写代码来删除已过期的特定行时,它将删除我需要的行,加上它上面的所有行。导致许多用户被删除。我的代码有什么问题?

代码语言:javascript
复制
        with open('keys.txt', 'r') as fr:
            lines = fr.readlines()
        with open('keys.txt', 'w') as fr:
            for line in lines:
                if line.find(str(id)) == -1:
                    fr.write(line)
                    context.user_data.clear()
                    return ConversationHandler.END

我的keys.txt看起来像这样。

代码语言:javascript
复制
('1372442', 1659568148811)
('1257406', 1659568153834)
('9910858', 1659568157498)
('1620335', 1659568165471)
('7654803', 1659568170428)
('976647', 1659568175183)
('55145660', 1660695274791)
('5496536', 1660715952400)
('15006383', 1658803605159)
('54928044', 79716354)

谢谢

因此,让我们说最后一个ID "54928044“是无效的,因为时间码是过期的。它不是只删除这一行,而是删除除第一行以外的所有行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-29 06:05:01

我不太熟悉PTB,所以我不能对下面的代码段说太多(我不认为从for循环返回是个好主意,我会从for循环中提取出来):

代码语言:javascript
复制
context.user_data.clear()
return ConversationHandler.END

但只是为了保持一致。当你这样做时:

代码语言:javascript
复制
with open('keys.txt', 'w') as fr:
        for line in lines:
            if line.find(str(id)) == -1:
                fr.write(line)

您真正要做的是检查该行是否包含ID子字符串,然后将该行写入文件,然后删除数据。我不太清楚为什么第一行是现在留在文件中的行,但您可以尝试下面的内容来缩小到您正在查看的ID:

代码语言:javascript
复制
with open('keys.txt', 'w') as fr:
        for line in lines:
            if line.find(str(id)) != -1:
                fr.write(line)

'!= -1‘表示ID在该行内,您想要删除它。试一试,如果它能解决你的问题,请告诉我。

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

https://stackoverflow.com/questions/73161520

复制
相关文章

相似问题

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