首页 > 解决方案 > 如何在while循环中打开和编辑txt文件?

问题描述

首先,我对python很陌生,我参加的这门大学课程对我没有帮助,所以提前抱歉。

我有一个带有书名的文本文档。我需要让用户输入一个选项。每个选项都与显示文本文档、编辑文本文档或只是停止程序同时进行。我有最后一个。我可以循环显示它。但是,如果我尝试循环执行它,它什么也没做,没有错误,什么也没有。

f = open("Books.txt")
for line in f:
    print (line)

inp = ()
while inp != 3:
    print("1 - Display, 2 - Add, 3 - Exit")
    inp = input("Please select an option.")
    inp = int(inp)
if inp == 1:
    print (f)

标签: pythonpython-3.xtxt

解决方案


您可以通过对文件对象 (f)使用tell()和方法来做到这一点seek()

这是它的代码

f = open("Books.txt", "a+")
inp = 0

while inp != 3:
    print("1 - Display, 2 - Add, 3 - Exit")
    inp = input("Please select an option.")
    inp = int(inp)
    if inp == 1:
        if f.tell() != 0:
            f.seek(0)
        for line in f:
            if line.strip():
                print (line.strip())
    elif inp == 2:
        book = input("What is your book name? ")
        f.writelines(["\n"+book])
   
f.close()

这个的输出如下

1 - Display, 2 - Add, 3 - Exit
Please select an option.1
HELLO
WORLD
TEST
1 - Display, 2 - Add, 3 - Exit
Please select an option.2
What is your book name? Test2
1 - Display, 2 - Add, 3 - Exit
Please select an option.1
HELLO
WORLD
TEST
Test2
1 - Display, 2 - Add, 3 - Exit
Please select an option.3

代码解释如下

  1. 以具有可读访问权限的附加模式打开文件(https://docs.python.org/3/library/functions.html#open

  2. 在这种情况下,文件光标将位于 EOF(文件结尾),因此您可以轻松地将新文本附加到文件中

  3. 当输入是1我们首先检查光标位置,使用tell()它返回读取的字节数的整数值,如果它不在起始位置。seek(0)我们使用(https://docs.python.org/3/tutorial/inputoutput.html)在文件开头移动光标

  4. 由于可能存在仅包含换行符的空行,我们可以在打印时过滤掉它们,然后通过使用字符串上的方法再次剥离白色字符来打印文本,strip()因为打印功能会自动添加换行符

  5. 要写行,我们需要传递一个新字符(当然是行分隔符),然后是书的输入名称


推荐阅读