我尝试使用“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被关闭?
谢谢
使用这种形式,它的工作。
with os.fdopen(os.open(filepath,os.O_CREAT | os.O_RDWR ),'w') as fd:
fd.write("abcd")
为了阐述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
发生。