据我所知,open()
真的很io.open()
,os.open()
的高级"包装器"。对于其他文件操作,例如重命名和删除文件,我必须使用os
功能,例如os.remove
和os.rename
文件,在某些情况下甚至shutil.move
,如下所示:
import shutil
with open("/tmp/workfile", "w") as f:
f.write("some stuff")
shutil.move(f.name, "finalfile")
为什么没有类似的包装器,例如打开删除/重命名?
有没有更好,也许更pythonic的方式来完成上述任务?
必须进行导入而不是在f
中重命名和删除 be 方法似乎很奇怪,将其指向另一个文件。特别是当open()
不需要导入时。
编辑:我删除了最后似乎激怒了很多人的del f
。我知道不需要。我在那里强调不再指向已删除文件的f
对象几乎没有用处。
@micke,想打赌这是由于历史吗?我猜open
函数是最早添加到 Python 中的函数之一,因为......语言的创造者很早就需要它。
我认为将open
作为内置函数很奇怪,而不是相反。
另请注意,您在with
块之外使用变量f
。并且当with
块退出时,close
f
会自动调用,因此不需要del f
语句。这就是使用with
块的全部意义(忘记.close()
是一个非常常见的错误(