我認爲我們可以用兩種方式處理文件:直接與內核(作爲文件的描述符)和指針(作爲C的高級語言)。如何管理python文件對象?
那麼,在Python中文件的管理方式是否一樣(例如文件指針與C中的文件指針一樣)? 在Python中使用open()函數時,我們是否創建了一個指向文件的指針?
我認爲我們可以用兩種方式處理文件:直接與內核(作爲文件的描述符)和指針(作爲C的高級語言)。如何管理python文件對象?
那麼,在Python中文件的管理方式是否一樣(例如文件指針與C中的文件指針一樣)? 在Python中使用open()函數時,我們是否創建了一個指向文件的指針?
在UNIX派生或POSIX兼容環境中,所有文件I/O都會經歷「文件描述符」。文件描述符是傳遞給各種OS系統調用的小整數。它們被設計成「不透明手柄」;它們本身沒有意義,它們只存在傳遞給文件I/O系統調用。
許多語言實現增值庫來執行內核提供的簡單打開/關閉/讀/寫/查找以外的高級文件I/O。在C中,該庫由#include <stdio.h>
描述。關聯的數據結構是FILE*
(指向某種結構的指針的typedef)。鑑於第一段的要求,我們可以看到FILE*
必須以某種方式在內部存儲文件描述符。
說C I/O通過指針沒有幫助。 C程序從不直接檢查FILE
。相反,FILE*
用作不透明句柄並傳遞給各種庫調用。
在Python中,數據結構是內置類型file
。同樣,如果file
要與操作系統進行交互,它也必須存儲文件描述符。
如果Python的file
是通過FILE*
機制,通過其他增值庫或直接通過文件描述符在內部實現的,它是一個實現細節,不值得考慮。我們所知道的一切都是,在POSIX上,file.write(python_buffer)
必須最終成爲像write(file_descriptor, buffer, len)
這樣的系統調用。
至於你的具體問題,「我們是否在Python中使用open()函數時創建了一個指向文件的指針?」,這個問題很模糊,因爲「指向文件的指針」不是一個特別有意義的短語。如果您的意思是「口譯員是否撥打fopen()
創建FILE*
?」,那麼答案是「可能。誰在乎?」
什麼是真,什麼是要知道重要的是,當我們調用open()
內置函數在Python,它返回file
類型的Python對象。對象允許某些文件I/O操作。
你在問關於Python和調用* C *高級語言? – jonrsharpe