在許多情況下,從 Unix 管道讀取資料比從檔案讀取資料更為可取。一個例子是從壓縮檔讀取序列,這通常比解壓縮檔案然後從中讀取更為方便。
您也可以在 Windows 命令列中使用管道,但這並不像 Unix 系統那樣靈活。
這個範例腳本使用 Bio.SeqIO
從 stdin
讀取 Solexa/Illumina FASTQ 格式的資料,將資料轉換為 Sanger FASTQ 格式(使用 PHRED 分數),並將其寫入 stdout
。 請參閱關於轉換序列檔案這個更通用的頁面以了解一些背景資訊。
import sys
from Bio import SeqIO
SeqIO.convert(sys.stdin, "fastq-solexa", sys.stdout, "fastq")
管道是命令列的一個功能,它允許將程式或命令的 stdout
輸出導向到另一個命令或程式的 stdin
輸入。例如,可以使用以下 shell 命令來提取壓縮的序列並將其導向到腳本 (solexa2sanger_fq.py
)。
gunzip -c some_solexa.fastq.gz | python solexa2sanger_fq.py
這會將 Sanger FASTQ 格式的序列寫入 stdout
- 在這種情況下是螢幕。
重定向類似於使用管道,但重定向不是將一個程式的輸出導向到另一個程式的輸入,而是將檔案的內容重定向到程式的 stdin
,以及/或將程式的 stdout
輸出重定向到檔案。 在這個範例中,Python 腳本從輸入檔案重定向接收其資料,而原本會列印到螢幕的輸出則改為重定向到輸出檔案。
python solexa2sanger_fq.py < some_solexa.fastq > some_phred.fastq
重定向還可以用於將程式或命令的 stderr
重定向到檔案。有關使用重定向的更多範例,請參閱這裡。