使用Python實現Linux命令的批量執行

2021-10-24 03:41:43 字數 1565 閱讀 8233

prodigal用於**原核生物cds,平常會用來**核苷酸序列的cds並且翻譯成氨基酸序列,但是需要一條一條的執行,量大的話很麻煩,需要一直修改命令。

該軟體使用時的命令格式為

prodigal -i /your/inputpath/1234_genomic.fasta -g 11  -a /your/outputpath/1234_prodigal_protein.faa

-i為輸入的核苷酸序列檔案,-g為密碼子表(預設為11),-a為輸出的氨基酸序列檔案。這裡我的習慣是序列檔名1234保持不變,用genomic代表基因組核苷酸序列,用prodigal_protein代表是使用prodigal**翻譯的氨基酸序列。批量執行的時候就需要不斷的修改「1234」的內容。

為了進步一簡化命令,希望只使用乙個使用者引數即可執行**。如:

.

/prodigal.py -i input_folder #只輸出資料夾名稱作為使用者引數

下面是**,初學python,這幾行折騰了一下午。

#!/usr/bin/python

#20200829 by fujch mail [email protected]

#this code is for processing prodigal with multiple species

import os

import getopt

import sys

opts,args = getopt.getopt(sys.ar**[1:

],'-i:',[

'inputpath='])

for opt_name,opt_value in opts:

if opt_name in

('-i'

,'--inputpath'):

path1 =

'/home/prodigal/input/'

+opt_value

path2 =

'/home/prodigal/output/'

+opt_value

ifnot os.path.exists(path2)

: os.makedirs(path2)

#自動建立輸出資料夾

files = os.listdir(path1)

forfile

in files:

ifile = os.path.splitext(

file)[

0]#提取檔名且不帶字尾名

ifile_str =

str(ifile)

ofile_str = ifile_str[0:

-8]+

"_prodigal_protein.faa"

os.system(

"prodigal -i %s/%s -g 11 -a %s/%s"

%(path1,

file

,path2,ofile_str)

)

**可能有囉嗦的地方,救急能用就行,哈哈。

可以根據自己的需求修改**適用不同的軟體。

使用Keepalived實現linux高可用集群

apt install libipset dev keepalived yuseradd s usr sbin nologin m g root keepalived scriptvim etc sysctl.conf 在末尾追加一行 net.ipv4.ip nonlocal bind 1vim e...

python使用peewee實現mysql資料操作

peewee可用class來建立表,增刪改查,應該是相對餘單錶 本人幾乎沒用過,自以為如此 想實現sql查詢,得到list,比如這樣的結果 但是查詢結果是全是資料 元組 且找不到列名,後dir後逐個嘗試發現列名可以使用result.description j 0 獲取 元組使用起來不方便,現實現將資...

使用python實現簡單爬蟲

近日學習了python語言,簡單實現了乙個爬蟲,爬取了慕課網課程簡介上的,並儲存到本地。以下是實驗 coding utf 8 spyder editor import re import os import urllib.request 在python3.6環境中實現 f soure urllib....