Python TemporaryDirectory 在“with”语句中使用时返回字符串
问题的简短版本
为什么TemporaryDirectory在with上下文中使用时返回一个字符串?
更长版本的问题
下面是一些 Python 代码的例子,它创建一个临时目录tempdir并打印相应的对象:
>>> import tempfile
>>> tempdir = tempfile.TemporaryDirectory(dir="/tmp")
>>> print(tempdir)
<TemporaryDirectory '/tmp/tmpf2yh8xu9'>
>>> print(type(tempdir))
<class 'tempfile.TemporaryDirectory'>
正如预期的那样,tempdir是TemporaryDirectory.
这是一个类似的例子,我with在调用时使用了一个语句TemporaryDirectory:
>>> import tempfile
>>> with tempfile.TemporaryDirectory(dir="/tmp") as tempdir: print(tempdir)
/tmp/tmp7mlmzegs
>>> with tempfile.TemporaryDirectory(dir="/tmp") as tempdir: print(type(tempdir))
<class 'str'>
在这种情况下,tempdir是一个字符串。当我查看类的__enter__方法时TemporaryDirectory,我看到以下内容:
def __enter__(self):
return self.name
果然 - 看起来像返回一个字符串而不是对象本身。
造成这种差异的原因是什么?为什么该__enter__方法返回文件名而不是文件对象?
凤凰求蛊
当年话下
相关分类