Re: fopen() and open() in cpython
Thank you so much for the answer, now it makes sense :D eryk sun 于2019年8月15日周四 上午12:27写道: > On 8/13/19, Windson Yang wrote: > > After my investigation, I found Since Python maintains its own buffer > when > > read/write files, the build-in python open() function will call the > open() > > system call instead of calling standard io fopen() for caching. So when > we > > read/write a file in Python, it would not call fopen(), fopen() only use > > for Python itself but not for python user. Am I correct? > > Python 2 I/O wraps C FILE streams (i.e. fopen, fclose, fread, fwrite, > fgets). Python 3 has its own I/O stack (raw, buffered, text) that aims > to be more reliably cross-platform than C FILE streams. Python 3 still > uses FILE streams internally in some cases (e.g. to read pyvenv.cfg at > startup). > > FYI in Windows open() or _wopen() is a C runtime library function, not > a system function. It calls the Windows API function CreateFile, which > calls the NT system function, NtCreateFile. It's similarly layered for > all calls, e.g. read() calls ReadFile or ReadConsoleW, which calls > NtReadFile or NtDeviceIoControlFile (ReadConsoleW). > -- https://mail.python.org/mailman/listinfo/python-list
Re: fopen() and open() in cpython
On 8/13/19, Windson Yang wrote: > After my investigation, I found Since Python maintains its own buffer when > read/write files, the build-in python open() function will call the open() > system call instead of calling standard io fopen() for caching. So when we > read/write a file in Python, it would not call fopen(), fopen() only use > for Python itself but not for python user. Am I correct? Python 2 I/O wraps C FILE streams (i.e. fopen, fclose, fread, fwrite, fgets). Python 3 has its own I/O stack (raw, buffered, text) that aims to be more reliably cross-platform than C FILE streams. Python 3 still uses FILE streams internally in some cases (e.g. to read pyvenv.cfg at startup). FYI in Windows open() or _wopen() is a C runtime library function, not a system function. It calls the Windows API function CreateFile, which calls the NT system function, NtCreateFile. It's similarly layered for all calls, e.g. read() calls ReadFile or ReadConsoleW, which calls NtReadFile or NtDeviceIoControlFile (ReadConsoleW). -- https://mail.python.org/mailman/listinfo/python-list
fopen() and open() in cpython
After my investigation, I found Since Python maintains its own buffer when read/write files, the build-in python open() function will call the open() system call instead of calling standard io fopen() for caching. So when we read/write a file in Python, it would not call fopen(), fopen() only use for Python itself but not for python user. Am I correct? -- https://mail.python.org/mailman/listinfo/python-list