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