我的程序需要在程序过程中创建的数据,最后用户可以选择是否将这些数据导出为.txt文件。如果为已存在的FileName输入一个值,程序应该询问用户是否要覆盖当前的.txt文件。在我的代码中,如果输入已存在的值,它将覆盖此数据而不是跟随下一行代码。我看过其他文章说要用“a”来追加,但我不明白这与这个程序有什么关系。如何停止覆盖文件?
(临时文件已经在程序的早期创建,如果用户选择导出数据,文件只是重命名,如果用户不想,它会删除文件。)
def export():
fileName = input(FileNameText)
exist = os.path.isfile(fileName)
if exist == True:
print("This file name already exists.")
while True:
try:
overWrite = input("Would you like to overwrite the file? Y = yes, N = no\n")
if overWrite == "Y":
break
if overWrite == "N":
export()
else:
invalidInput()
except:
invalidInput()
os.rename("temp.txt",fileName+".txt")
if exist == False:
os.remove("temp.txt")
正确缩进你的代码请 –
如果目标文件已经存在,'os.rename'将会失败。无论用户选择了什么(无论是否覆盖),您都需要'shutil.move' –
这个脚本在任何情况下都用os.rename评估这一行。你应该重新思考从头开始的逻辑 –