Python如何将多个input输入内容保存到txt文件(解决写入None问题)
问题根源
你写入文件得到None的核心原因是错误使用了print()函数:
print()的作用是把内容输出到控制台,它本身没有返回值,把print()的执行结果转成字符串赋值给变量,得到的永远是字符串形式的None
另外你的代码还有三个容易出问题的点:
- 开头导入的
from distutils import text_file全程没有使用,且distutils在Python 3.12及以上版本已经从标准库移除,属于无效导入 - 末尾的
file.close没有加括号,不会真正执行文件关闭操作,极端场景下会导致写入内容丢失 - 拼接字符串后调用
.split(" ")属于多余逻辑,你格式化生成的字符串本身没有需要拆分的多余空格
修复方案
直接拼接你需要存储的内容字符串,不要套在print()里,推荐使用with上下文管理器操作文件,会自动完成文件关闭,不需要手动调用close方法:
kids = input("How many kids do you have?>") food = input("Whats your favorite food?>") tv = input("Whats your favorite sports team>") work = input("Where do you work?>") carmake = input("Whats the make of your car?>") symbol = input("Pick a symbol !@#$%^&*()_+") # 直接拼接要存储的内容,不需要调用print results = f"{kids}, {food}, {tv}, {work}, {carmake}, {symbol}" # 用with写法自动管理文件,指定编码避免中文乱码 with open("passwordGenerator.txt", "w", encoding="utf-8") as f: f.write(results)
如果你确实想要存储列表格式的内容,直接把变量组成列表转字符串即可,同样不需要套print():
results = str([kids, food, tv, work, carmake, symbol])
内容的提问来源于stack exchange,提问作者charles rhaburn
相关产品推荐
相关产品推荐

