美文网首页python基因组学
python3 管道流操作

python3 管道流操作

作者: caokai001 | 来源:发表于2020-04-12 10:42 被阅读0次

参考链接:

  1. 关于io.TextIOWrapper 学习
  2. 如何用 Python 执行单行命令 -生信菜鸟团
  3. python3-cookbook
  4. Biopython-cn

平时对于文本处理,可以选择sed,grep ,复杂一点awk ,再复杂一些哟Python. python 和linux 一样,也可以支持单行命令来操作!格式:

python -c <command>  
## -c cmd : program passed in as string (terminates option list)
## terminates option list 表示 -c 之后的其它选项不起作用,为终极选项

-c 之后,要用双引号将命令包起来,import;结尾,命令用[]括起来,多行命令用多个[]

  • 第一个例子:不区分单双引号

    (base) [09:59:01] kcao@localhost:~
    $ python -c "print('hello world')"
    hello world
    (base) [09:59:01] kcao@localhost:~
    $ python -c 'print("hello world")'
    hello world
    
  • 接受echo 输入流;

    必须加上read方法,sys.stdin 和f=open("...","r") 一样,需要f.read() 才可以读取文件内容.

$ echo "ck" |python -c "import sys;print(sys.stdin)"
<_io.TextIOWrapper name='<stdin>' mode='r' encoding='UTF-8'>


$ echo "ck" |python -c "import sys;print(sys.stdin.read())"
ck
  • 读取文件,计算fa文件的G碱基数目
$ cat > test.fa

>chr_1
ATCGTCGaaAATGAANccNNttGTA
AGGTCTNAAccAAttGggG
>chr_2
ATCGAATGATCGANNNGccTA
AGGTCTNAAAAGG
>chr_3
ATCGTCGANNNGTAATggGA
AGGTCTNAAAAGG
>chr_4
ATCGTCaaaGANNAATGANGgggTA

python 单行命令,调用Biopython包

$ cat test.fa |python -c "import sys;from Bio import SeqIO;[print(seq_record.id,seq_record.seq.count('G')) for seq_record in SeqIO.parse(sys.stdin,'fasta')]"
chr_1 8
chr_2 8
chr_3 8
chr_4 4
  • 类似grep 操作,输出大于号的行.
$ cat test.fa | python -c "import sys,re;[sys.stdout.write(line) for line in sys.stdin if re.search('>', line)]"
>chr_1
>chr_2
>chr_3
>chr_4
  • 类似sed 操作. 去掉>chr_.
$ cat test.fa | python -c "import sys,re;[sys.stdout.write(re.sub('>chr_', '', line)) for line in sys.stdin]"
1
ATCGTCGaaAATGAANccNNttGTA
AGGTCTNAAccAAttGggG
2
ATCGAATGATCGANNNGccTA
AGGTCTNAAAAGG
3
ATCGTCGANNNGTAATggGA
AGGTCTNAAAAGG
4
ATCGTCaaaGANNAATGANGgggTA

相关文章

网友评论

    本文标题:python3 管道流操作

    本文链接:https://www.haomeiwen.com/subject/brlvmhtx.html