我的程序需要在程序過程中創建的數據,最後用戶可以選擇是否將這些數據導出爲.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評估這一行。你應該重新思考從頭開始的邏輯 –