我有以下代码,但是如果文件不存在,它将不起作用:
def log(self, action, data):
import json
with open('ReservationsManagerApp/logs/'+data['booking']+'.json', 'r+') as outfile:
log_data = {
'timestamp': str(datetime.today()),
'action': action,
'data': data
}
json.dump(log_data, outfile)
如果文件不存在,我希望该方法创建文件,但是我发现的所有示例都没有说明如何使用with
子句来创建文件,它们只是使用try: open
。
如果文件不存在,如何指示with
子句创建文件?
答案 0 :(得分:0)
模式r+
是读写模式,但是如果需要,则不会创建文件。我认为您想要w+
。不错,table here。
答案 1 :(得分:0)
您可以改为以a+
模式(具有读取权限的追加模式)打开文件,并尝试将文件定位到0,以便在尚不存在的情况下创建该文件,但是也可以允许从头开始读取文件:
with open('ReservationsManagerApp/logs/'+data['booking']+'.json', 'a+') as outfile:
outfile.seek(0)