Python使用with子句打开或创建文件

时间:2018-11-27 17:51:19

标签: python

我有以下代码,但是如果文件不存在,它将不起作用:

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子句创建文件?

2 个答案:

答案 0 :(得分:0)

模式r+是读写模式,但是如果需要,则不会创建文件。我认为您想要w+。不错,table here

答案 1 :(得分:0)

您可以改为以a+模式(具有读取权限的追加模式)打开文件,并尝试将文件定位到0,以便在尚不存在的情况下创建该文件,但是也可以允许从头开始读取文件:

with open('ReservationsManagerApp/logs/'+data['booking']+'.json', 'a+') as outfile:
    outfile.seek(0)