Does asyncio supports asynchronous I/O for file operations? If yes, how I can use this in Python 3.5 with async/await syntax code?
问题:
回答1:
Most operating systems don't support asynchronous file operations.
That's why asyncio
doesn't support them either.
See the asyncio wiki for further explanation.
回答2:
That depends what library you use.
curio
offers this functionality, https://curio.readthedocs.io/en/latest/reference.html#module-curio.file
plain asyncio
doesn't, but there are 3rd party libraries, e.g. https://github.com/Tinche/aiofiles (which is really synchronous file access isolated in threads)
Modern operating systems do provide asynchronous file primitives, but these are varied, thus each would need own implementation. Please compare:
- http://man7.org/linux/man-pages/man7/aio.7.html
- https://msdn.microsoft.com/en-us/library/windows/desktop/aa365683(v=vs.85).aspx
- https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/TechniquesforReadingandWritingCustomFiles/TechniquesforReadingandWritingCustomFiles.html
I suspect someone will soon rip out underlying async io from node.js
and make a decent Python library, or perhaps someone already has.
回答3:
asyncio does not have support for this. However, aiofiles supports just this. Please have a look.