python - 如何在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)
解决方案
您可以通过对文件对象 (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
代码解释如下
以具有可读访问权限的附加模式打开文件(https://docs.python.org/3/library/functions.html#open)
在这种情况下,文件光标将位于 EOF(文件结尾),因此您可以轻松地将新文本附加到文件中
当输入是
1
我们首先检查光标位置,使用tell()
它返回读取的字节数的整数值,如果它不在起始位置。seek(0)
我们使用(https://docs.python.org/3/tutorial/inputoutput.html)在文件开头移动光标由于可能存在仅包含换行符的空行,我们可以在打印时过滤掉它们,然后通过使用字符串上的方法再次剥离白色字符来打印文本,
strip()
因为打印功能会自动添加换行符要写行,我们需要传递一个新字符(当然是行分隔符),然后是书的输入名称
推荐阅读
- docker - Cassandra alpine 图像发布计划?
- java - Docker 错误:无法找到或加载主类 Main.Main
- javascript - 更新用户信息
- java - 使用 Java Streams 从嵌套列表创建 TreeMap
- python - 类型错误:缺少多个 .py 文件所需的位置参数
- html - XSLT:如何在 html 结果中正确应用 css 类
- wordpress - 如何移动 woocommerce 添加到购物车按钮下面的变化和插件?
- r - 如何基于响应式 if 语句执行多个响应式函数
- html - pre中的精确行高
- regex - 我怎么能替换一些 | 经过 :?