我需要制作一個 Python 腳本來創建一個 FASTA 檔案,其中包含來自 /resources/pvalb/ 的所有 .fa 檔案的所有記錄。該腳本應該能夠獲取檔案串列并輸出所有檔案的內容(基本上模仿 bash 中的 cat 命令)
這是我到目前為止的一個例子:
> import sys
>
> filenames = sys.argv[1:]
>
> for filename in filenames:
> for line in open(filename):
> line = line.rstrip("\n")
> print(line)
uj5u.com熱心網友回復:
以下是您的腳本需要考慮的一些事項:
- 檔案可能包含二進制資料或無法識別的文本編碼
- 檔案可能很大
- 它們甚至可能比您系統上的可用記憶體大
- 甚至有可能一條“線”會比系統上的記憶體大
要解決這些問題,最好用 以二進制模式打開檔案'b',然后分塊讀取。
這是一個示例,每個塊最多 4 KiB:
import sys
for path in sys.argv[1:]:
with open(path, 'rb') as file:
while data := file.read(4096):
sys.stdout.buffer.write(data)
還有一些提示:
- 大多數檔案系統、大多數 SSD 和較新的 HDD 都將資料存盤在 4 KiB 塊中,這使得以 4 KiB 塊讀取和寫入通常是一種非常有效的方式
- 對于非常大的檔案,尤其是在 Python 等“慢”語言中,您可以通過將這些塊增加到 1 MiB 甚至 10 MiB 來獲得更快的性能
- 1 MiB 和 10 MiB 塊在 Lustre 和 BeeGFS 等大型分布式檔案系統上很常見,盡管這些檔案系統可以具有多種塊大小。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/461293.html
