python 管道持续读写,python3 管道流操作

这篇博客介绍了如何利用Python的单行命令进行文本处理,包括打印、读取输入流、处理文件内容以及进行类似grep和sed的操作。通过示例展示了如何计算FASTA文件中特定碱基的数目、筛选特定模式的行以及修改文件内容。
摘要由CSDN通过智能技术生成

参考链接:

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

python -c

## -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)"

$ 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值