打印下他们的类型,发现类型不一致。
In [5]: import json
In [6]: num = [1,2,3,4,5,6,7]
In [7]: file_1 = 'first.json'
In [8]: with open(file_1,'w') as joe:
...: print(type(joe))
...: json.dump(num, joe)
...:
In [14]: import json
In [15]: num = [1,2,3,4,5,6,7]
In [16]: file_1 = 'first.json'
In [17]: with open(file_1, 'w'):
...: print(type(file_1))
...: json.dump(num, file_1)
...:
...:
...:
AttributeError: 'str' object has no attribute 'write'
第二段代码
虽然使用了open方法打开文件,但是还是用了直接字符串对象file_1,相当于没有open这一步骤。
等价于以下代码:
import json
file_1 = 'first.json'
json.dump(num, file_1)
而字符串本身是没有写入这个方法的,因此报错:AttributeError: 'str' object has no attribute 'write'
不想要with 可以讲打开的对象赋值给f = open(file_1,'w')