簡體   English   中英

python 循環打印文件內容的腳本

[英]python script for loop to print contents of files

我需要制作一個 Python 腳本來創建一個 FASTA 文件,其中包含來自 /resources/pvalb/ 的所有 .fa 文件的所有記錄。 該腳本應該能夠獲取文件列表和 output 所有文件的內容(基本上模仿 bash 中的 cat 命令)

到目前為止,這是我的示例:

> import sys
> 
> filenames = sys.argv[1:]
> 
> for filename in filenames:
>     for line in open(filename):
>         line = line.rstrip("\n")
>         print(line)

以下是您的腳本需要考慮的一些事項:

  • 這些文件可能包含二進制數據或無法識別的文本編碼
  • 文件可能很大
    • 它們甚至可能大於您系統上可用的 memory
    • 甚至有可能一個“行”會比您系統上的 memory 大

要解決這些問題,最好使用'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 塊讀取和寫入通常是一種非常有效的方式 go
  • 對於非常大的文件,尤其是像 Python 這樣的“慢速”語言,您可以通過將這些塊增加到 1 MiB 甚至 10 MiB 來獲得更快的性能
  • 1 MiB 和 10 MiB 塊在大型分布式文件系統(如 Lustre 和 BeeGFS)中很常見,盡管這些文件系統可以有各種各樣的塊大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM