python-3.x - 将输入写入文件,不包括最后一行
问题描述
我的简单任务是编写一个请求文件名的函数,然后反复从用户那里读取行并将这些行保存到命名文件中。
当用户输入本身是一行上的一个点时,它会停止保存行。不保存包含单个点的行。
示例输出如下所示:
Save to what file: mytest.txt
> This is
> my attempt at
> the problem.
>
> The last line was empty
> .
Saving file mytest.txt
5 lines saved
这是我的尝试:
def savefile():
filename = input("Save to what file: ")
infile = open(filename, "w")
line = ""
lineCount = 0
while line != ".":
line = input("> ")
infile.write(line + "\n")
lineCount += 1
print("Saving file", filename)
print(lineCount, "lines saved")
infile.close()
效果很好,除了我的while
循环还保存了最后一行(“。”本身在一行上)。我也尝试了一个if
-else
循环:
if line != ".":
line = input("> ")
infile.write(line + "\n")
lineCount += 1
else:
infile.close()
但这只是保存输入的第一行。
如何排除输入的最后一行?
解决方案
甚至不需要解释:
with open("my_file.txt","w") as file:
while True:
line = input("> ")
if line.strip() == ".":
break
else:
file.write(line + "\n")
推荐阅读
- vue.js - 找不到模块“./router”的声明文件
- javascript - 将图标添加到不基于值的 select2
- java - 在 url 中找不到处理带有 http 的 Intent 的活动
- knockout.js - 淘汰JS选项数据绑定设置选择为“选定”
- java - Spring Boot 将嵌入式 servlet 定制器复制到管理端口
- java - 字符串切换回上一个值
- sql - 根据另一个表中另一个列的值选择供应商 ID
- sql - SQL - 计算每个值的行数
- c# - Firefox 驱动程序不会在配置文件中保存会话和 cookie
- java - junit 无法加载资源文件夹中的值