我正在尝试以w +模式创建文件,向其中写入一些数据,打印该日期,关闭该文件,重新打开它,然后写入更多数据,以便将其自身附加到已写入的数据上,而不会丢失原始数据数据。我知道我第二次打开它不是将其打开到w +,而是w模式知道了这一点,但是我仍然被困住。
我正在尝试使用.seek(0,2)方法将指针移到文件末尾,然后写入。这是这里建议的一种方法,似乎大多数人都同意它可行。它对我有用,但是在尝试关闭和重新打开文件时不起作用。
# open a new file days.txt in write plus read mode 'w+'
days_file = open('days.txt', "w+")
# write data to file
days_file.write(" Monday\n Tuesday\n Wednesday\n Thursday\n Friday\n")
# use .seek() to move the pointer to the start read data into days
days_file.seek(0)
days = days_file.read()
# print the entire file contents and close the file
print(days)
days_file.close()
# re open file and use .seek() to move the pointer to the end of the file and add days
days_file = open("days.txt", "w")
days_file.seek(0,2)
days_file.write(" Saturday\n Sunday")
days_file.close()
# Re open file in read mode, read the file, print list of both old and new data
days_file = open("days.txt", "r")
days_file.seek(0)
days = days_file.read()
print("My output is: \n",day)
My output is:
Saturday
Sunday
如果我在任何时候都不关闭文件,而只停留在w +模式,则可以使此代码正常工作,但是,我正在寻找的是一种创建+编写+关闭+重新打开+追加的方法。有解决方案吗?
答案 0 :(得分:1)
使用file = open("days.txt", "a")
以附加模式打开文件
编辑:
即使抛出with
,也可以使用Exception
关键字打开文件,从而可以安全,一致地关闭文件。
with open(myfile, 'w+'):
# Do things
# File closes automatically here
否则,您必须手动调用file.close()
。否则,您的文件将保持打开状态,并且如果您不断打开文件,则可能用完了句柄