日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python write 写多行_如何用 Python 执行单行命令

發(fā)布時間:2025/3/12 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python write 写多行_如何用 Python 执行单行命令 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一般來說,面對日常處理的一些小任務(wù),直接用?sed,grep?之類的就可以搞定,更復(fù)雜一點的就會考慮?awk?或者用一些現(xiàn)成的輪子,要是?awk?搞不定我就只好用 Python 了。但有些時候,我僅僅只是想寫一個一次性腳本,不想打開編輯器寫所謂?格式優(yōu)美?的 Python 語句呢?(正如寫 Perl 一樣隨性)

其實在 Python 中也可以使用單行命令,直接用?python -c ?即可,雖然這與 Python 之禪中所說的?Readability counts?相悖,但信手拈來,隨便用用還是挺方便的。

-c cmd : program passed in as string (terminates option list)

terminates option list 表示?-c?之后的其它選項不起作用,為終極選項。

例如:

python -c "print('Hello World')"Hello World

-c?之后,要用雙引號將命令包起來,import?以;結(jié)尾,命令用[]括起來,多行命令用多個[]。

python -c "import os,time;[print(i) for i in os.listdir()];[print(time.time())]"

一些比較復(fù)雜的命令復(fù)雜的命令必須要用[]括起來,否則會報錯。

舉個實際的例子,比如在生物信息學(xué)編程實戰(zhàn)一文中第三題 ,hg19 基因組序列的一些探究,jimmy 老師用 Perl 單行命令做了這道題:

perl -alne '{if(/^>/){$chr=$_}else{ $A_count{$chr}+=($_=~tr/Aa//); $T_count{$chr}+=($_=~tr/Tt//);$C_count{$chr}+=($_=~tr/Cc//); $G_count{$chr}+=($_=~tr/Gg//); $N_count{$chr}+=($_=~tr/Nn//); }}END{print "$_ $A_count{$_} $T_count{$_} $C_count{$_} $G_count{$_} $N_count{$_}" foreach sort keys %N_count}' test.fa

示例數(shù)據(jù):

>chr_1ATCGTCGaaAATGAANccNNttGTAAGGTCTNAAccAAttGggG>chr_2ATCGAATGATCGANNNGccTAAGGTCTNAAAAGG>chr_3ATCGTCGANNNGTAATggGAAGGTCTNAAAAGG>chr_4ATCGTCaaaGANNAATGANGgggTA

結(jié)果如下:

>chr_1 13 10 7 10 4>chr_2 11 6 5 8 4>chr_3 10 6 3 10 4>chr_4 9 4 2 7 3

這題用 Python 單行命令也可以寫:

cat test.fa | python -c "import sys;from Bio import SeqIO;[print(line.id,line.seq.count('A'),line.seq.count('T'),line.seq.count('C'),line.seq.count('G')) for line in SeqIO.parse(sys.stdin,'fasta')]"

這里我就用了 Biopython 來解析 fasta 格式,所以 Python 的優(yōu)勢就在于有眾多現(xiàn)成的模塊可以調(diào)用,減少了代碼量。

再舉個例子,比如一行代碼轉(zhuǎn)換 genbank 為 fasta :

cat sequence.gb | python -c "import sys;from Bio import SeqIO;SeqIO.write(SeqIO.parse(sys.stdin, 'genbank'),sys.stdout,'fasta')" > sequence.fasta

關(guān)于更多 Biopython 的內(nèi)容可以參見我之前的筆記:

?我的Python筆記·BioPython(一)?我的Python筆記·BioPython(二)?用 BioPython 做一些酷酷的事情(一)?用 BioPython 做一些酷酷的事情(二)

其他例子

?算術(shù):

python -c "print(3.0/2)"

?導(dǎo)入模塊并輸出結(jié)果:

python -c "import math;print(math.sin(1))"

?使用循環(huán)輸出 1-10:

python -c "for i in range(1,11):print(i)"

?使用多個循環(huán)(注意格式):

python -c "for i, j in ((i,j) for i in range (1,11) for j in range(1,11)): print(i, j)"

?實現(xiàn)類似?grep?的功能,輸出正則匹配的行:

echo hey | python -c "import sys,re;[sys.stdout.write(line) for line in sys.stdin if re.search('he.', line)]"

?實現(xiàn)類似?sed?的功能,使用正則表達(dá)式替換并輸出結(jié)果:

echo hallo | python -c "import sys,re;[sys.stdout.write(re.sub('h[au]llo', 'hello', line)) for line in sys.stdin]"

?刪除前兩個字符:

python -c "import sys;[sys.stdout.write(' '.join(line.split(' ')[2:])) for line in sys.stdin]" < input.txt

除了使用?-c?之外,Python 還可以使用?-m?參數(shù)直接使用模塊

-m mod : run library module as a script (terminates option list)

?使用 calendar 模塊,輸出今年的日歷:

python -m calendar

?開啟文件分享:

python -m http.server 8000

執(zhí)行后,在本機(jī)打開?http://localhost:8000?,或者在局域網(wǎng)內(nèi)的其它機(jī)器上打開?http://本機(jī)ip:8000,就能訪問到執(zhí)行目錄下的文件。

?生成 HTML 格式官方幫助文檔:

python -m pydoc -p 9000

?安裝 module:

python -m pip install xxx

這種寫法相比于?pip install xxx?,在存在多個 Python 版本的環(huán)境中,可以精確地控制三方庫的安裝位置。

?創(chuàng)建、查看和提取 zip 格式壓縮包:?-l?顯示 zip 格式壓縮包中的文件列表?-c?創(chuàng)建 zip 格式壓縮包?-e?提取 zip 格式壓縮包?-t?驗證文件是一個有效的 zip 格式壓縮包

python -m zipfile -c test.zip tmp1.txt tmp2.txtpython -m zipfile -e test.zip target-dir/python -m zipfile -l test.zip

引用鏈接

[1]??https://en.wikibooks.org/wiki/Python_Programming/Command-line_one-liners

[2]?Python 中 -m 的典型用法、原理解析與發(fā)展演變


生信技能樹目前已經(jīng)公開了三個生信知識庫,記得來關(guān)注哦~

每周文獻(xiàn)分享

https://www.yuque.com/biotrainee/weeklypaper

腫瘤外顯子分析指南

https://www.yuque.com/biotrainee/wes

生物統(tǒng)計從理論到實踐

https://www.yuque.com/biotrainee/biostat


友情宣傳

強(qiáng)烈建議你推薦給身邊的博士后以及年輕生物學(xué)PI,多一點數(shù)據(jù)認(rèn)知,讓他們的科研上一個臺階:

?生信技能樹的2019年終總結(jié),你的生物信息學(xué)成長寶藏?2020學(xué)習(xí)主旋律,B站74小時免費教學(xué)視頻為你領(lǐng)路?全國巡講全球聽(買一得五),你的生物信息學(xué)入門課

總結(jié)

以上是生活随笔為你收集整理的python write 写多行_如何用 Python 执行单行命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。