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

Python open or create file using with clause

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
9
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子句创建该文件?


您可以在a+模式(具有读取权限的附加模式)下打开文件,并执行文件查找到位置0,以便在文件不存在的情况下创建文件,但也允许从开始读取文件:

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

模式r+是读+写的,但如果需要,不会创建文件。我想你想要w+。这里的桌子不错。