python-3.x - 附加模式下的 open() 未按预期运行
问题描述
我正在尝试创建一个程序,询问用户他们想对文件执行什么操作,读取/附加/删除文件。
FileName = open(input("Enter file name: "))
ReadFile = FileName.read()
Decision = input("Do you want to read/delete/append to the file?: ")
if Decision == "read":
print(ReadFile)
FileName.close()
elif Decision == "append":
Append = input("Type what you want to add: ")
with open("FileName","a") as file:
file.write(Append)
但是当我检查文件时它没有附加它
解决方案
发生这种情况是因为您实际上并没有打开同一个文件。您要求用户输入以指定文件的位置以读取该文件,但是如果他们选择“附加”该文件,则您让他们附加到与他们指定的文件无关的文件中。您让用户附加一个名为"FileName"
. 当用户选择“附加”时,您已将该字符串硬编码为文件的位置。
这里,FileName
不是表示文件位置的字符串。这是一个代表文件的对象。
FileName = open(input("Enter file name: "))
您让用户在文件路径中输入了一个字符串,但您没有存储该字符串值。您将该值用于open()
文件以供阅读。
在这里,您正在打开一个名为"FileName"
python 开始的目录中的文件,因为这里没有可见的路径。
with open("FileName","a") as file:
file.write(Append)
去查看你的起始目录,看看你是否创建了一个名为"FileName"
.
请记住,如果您打开一个文件mode="a"
,并且该文件不存在,则会创建一个新文件。
https://docs.python.org/3/library/functions.html#open
我还想借此机会向您介绍PEP8,Python 的样式指南。这不是法律,但遵循它会帮助其他 Python 程序员更快地帮助你。
话虽如此,请考虑使您的代码片段看起来更像以下代码:
filename = input("Enter file name: ")
decision = input("Do you want to read/delete/append to the file?: ")
if decision == "read":
with open(filename) as file:
print(file.read())
elif decision == "append":
append = input("Type what you want to add: ")
with open(filename, "a") as file:
file.write(append)
推荐阅读
- c# - DataAccesLayer DbContext中不同环境的不同数据库
- php - array_filter 函数是更改给定数组还是返回一个新数组?
- reactjs - 如何修复 React 中的“TypeError:this.props is undefined”
- elasticsearch - AWS appync 查询解析器返回 null
- reactjs - React-Table :自定义分页设计
- ruby - 在开发模式下,Rails 应用程序的 Docker 容器运行速度非常慢
- python - 在 Python Turtle 中向后画一个圆圈
- c - 如何在c函数中访问堆起始地址和堆基地址
- c# - 在 C# 中将元素添加到 Parallel.ForEach 中的列表时获取数组索引超出范围异常
- tsql - 如何取消透视以下列?