如何打开使用“与”“操作系统”文件对象?(How to open file object from

2019-10-18 20:00发布

我尝试使用“os.open()”,如下文件

>>> filePath
'C:\\Shashidhar\\text.csv'
>>> fd = os.open(filePath,os.O_CREAT)
>>> with os.fdopen(fd, 'w') as myfile:
...    myfile.write("hello")

IOError: [Errno 9] Bad file descriptor

>>>

任何想法我如何从os.fdopen使用“与”,使连接打开的文件对象可以automatially被关闭?

谢谢

Answer 1:

使用这种形式,它的工作。

with os.fdopen(os.open(filepath,os.O_CREAT | os.O_RDWR ),'w') as fd:  
    fd.write("abcd")


Answer 2:

为了阐述Rohith的答案 ,他们的方式要打开的文件是非常重要的。

with通过在内部调用seleral功能,所以我想它一步一步的工作:

>>> fd = os.open("c:\\temp\\xyxy", os.O_CREAT)
>>> f = os.fdopen(fd, 'w')
>>> myfile = f.__enter__()
>>> myfile.write("213")
>>> f.__exit__()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IOError: [Errno 9] Bad file descriptor

什么? 为什么? 为什么是现在?

如果我做的一样

>>> fd = os.open(filepath, os.O_CREAT | os.O_RDWR)

一切工作正常。

随着write() ,你只写文件对象的输出河豚和f.__exit__() essentiall调用f.close()这反过来又调用f.flush()它刷新此输出中buffer to disk -或者,至少,试图这样做。

但它失败,因为文件不可写。 因此,一个[Errno 9] Bad file descriptor发生。



文章来源: How to open file object from 'os' using 'with'?