在python中使用 with open,为什么一定要加后缀as?
as的意思不是为文件重命名吗,难道在这里有什么特殊的意义?
回答:
as 不是重命名原文件。
as 是代表打开后的文件句柄。比如 f = open(file_1,'w')
,as 后面那个相当于这个 f 变量。之所以用with是因为with是一个上下文管理器,可以自动关闭文件。不需要主动去调用f.close().
回答:
打印下他们的类型,发现类型不一致。
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)
...:
<class '_io.TextIOWrapper'>
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)
...:
...:
...:
<class 'str'>
AttributeError: 'str' object has no attribute 'write'
第二段代码
虽然使用了open方法打开文件,但是还是用了直接字符串对象file_1,相当于没有open这一步骤。
等价于以下代码:
import jsonfile_1 = 'first.json'
json.dump(num, file_1)
而字符串本身是没有写入这个方法的,因此报错:AttributeError: 'str' object has no attribute 'write'
不想要with 可以讲打开的对象赋值给f = open(file_1,'w')
回答:
with as 是 上下文管理器,利用Python的魔法方法实现的。
参考 上下文管理器 - 魔术方法
以上是 在python中使用 with open,为什么一定要加后缀as? 的全部内容, 来源链接: utcz.com/a/159181.html