我意识到open()
我一直在使用的功能是该功能的别名,io.open()
而*
从中导入os
将使该功能黯然失色。
通过io
模块和os
模块打开文件有什么区别?
io.open()
是文件I / O的首选高级接口。它将OS级文件描述符包装在一个对象中,你可以使用该对象以Python方式访问文件。
os.open()
只是较低级POSIX syscall的包装。它使用更少的符号(和更多POSIX-y)参数,并返回代表打开文件的文件描述符(一个数字)。它并没有返回一个文件对象; 返回的值将没有read()
或write()
方法。
此功能适用于低级I / O。为了正常使用,请使用内置函数
open()
,该函数返回带有read()
和write()
方法(还有更多)的“文件对象” 。
尽管我不得不怀疑,为什么有人会选择Python进行低级I / O?
也许Python是最适合程序员的语言。也许他们正在为另一个Python程序编写插件。
为什么不?低级操作并不决定我们应该用哪种语言表达。
我的意思是,你也想用Python写底层代码,中其他,高层次的代码,到Python是更适合。
@cdhowie是错误的二分法。您可能要使用Python并执行系统的低级控制。“不这样做会导致移植性,可读性和可维护性降低”,这也是错误的。比起什么?与C中相同的低级API交谈?不,从Python与他们交谈将更加可移植且更易读。如果您的意思是“与使用高级接口相比”,那么,您要做的事情(业务目标)涉及低级接口。低级/高级API!=低级/高级语言。