iT邦幫忙

2024 iThome 鐵人賽

DAY 27
1
自我挑戰組

每日挑戰:從零開始的 Python 學習之旅系列 第 27

【Day 27】進階檔案處理篇

  • 分享至 

  • xImage
  •  

Hi 大家好,

今天要開始介紹Python中的進階檔案處理篇,那我們開始吧!

檔案描述符(File Descriptor, FD)

Q: 什麼是檔案描述符?
A: 指的是作業系統用來表示開啟檔案的識別碼(identifier),它是一個整數(int)型別。當你每開啟一個檔案,系統就會分配一個唯一的檔案描述給該檔案

  • 當一次開啟多個檔案,作業系統會依照順序分配檔案描述符(FD),數值是由3開始,依序遞增,分配給新開啟的檔案

分配順序規則:

  • 因為Python是跨平台語言,目標是為了能夠在不同作業系統(Windows、Linux和macOS)上運行,所以保留了許多在UNIX 系統中的特性,例如檔案描述器的分配方式
  • 其中012已經被預留給標準輸入(stdin)標準輸出(stdout)標準錯誤(stderr),所以第一個被打開的檔案會從3開始
import os

fd = os.open('example.txt', os.O_RDONLY)
print(type(fd))
PS D:\Project\practice> python hi.py
<class 'int'>
PS D:\Project\practice>

舉個例子:

  1. 建立三個檔案 (例如: example.txt、exampl1.txt、example2.txt)
  2. 當開啟檔案後,未執行描述檔案關閉的情況
import os

fd = os.open('example.txt', os.O_RDONLY)
fd1 = os.open('example1.txt', os.O_RDONLY)
fd2 = os.open('example2.txt', os.O_RDONLY)

print(fd)
print(fd1)
print(fd2)
PS D:\Project\practice> python hi.py
3
4
5
PS D:\Project\practice> 
  1. 當開啟檔案後,執行描述檔案關閉的情況
import os

fd = os.open('example.txt', os.O_RDONLY)
fd1 = os.open('example1.txt', os.O_RDONLY)

os.close(fd)

print(fd)
print(fd1)

fd2 = os.open('example2.txt', os.O_RDONLY)
print(fd2)
PS D:\Project\practice> python hi.py
3
4
3   <==== 因為fd執行關閉後會釋出3號識別碼,所以下一個開啟的檔案會配給到3號識別碼
PS D:\Project\practice>

那今天就介紹到這裡,我們明天見~


上一篇
【Day 26】檔案處理篇 - 續集
下一篇
【Day 28】進階檔案處理篇 - 續集
系列文
每日挑戰:從零開始的 Python 學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言