perl调用python
1.确保perl已经安装并且在PATH中。
2.in python:
import subprocess
subprocess.call(["perl", "/path/to/your-script.pl"])
如果脚本本身有可执行权限,直接这样也行:
import subprocess
subprocess.call(["/path/to/your-script.pl"])
⑵ Perl,R,Python在生物信息学中是怎样的角色
应该说Python/Perl是相互替代的脚本语言,但个人推荐用Python, 虽然很多老的生物信息软件是用Perl,Python学习曲线好,功能也更强大,是发展趋势。这两个语言主要是做数据预处理、文本处理和格式转换、对算法效率要求不高的分析软件开发,系统管理和pipeline搭建等工作。R语言主要的优势是大量的统计包的支持,数据统计分析中非常常用。Python和R有良好的接口。关于绘图很多人用R,其实Python的Matplotlib的绘图效果比它漂亮很多,也更强大。对pipeline的搭建shell编程更适合,是一个不可缺少的技能。与数据库相关的工作需要用到SQL, linux : 操作系统,是基础。 生物信息对Linux的要求其实并不高,并不是要做系统开发者或管理员,只需要会用就行。复制粘贴、处理数据、安装软件等。生物信息软件:标准数据分析。 生物信息学的数据格式已经基本标准化,大部分工作可以直接用软件完成。Perl和Python:处理个性化问题、软件之间的对接。 这两门语言至少应该熟练掌握一门自己写程序用,另外一门要能看得懂。 写点小脚本感觉差别不大,但是perl写大程序不合适。 很多人认为python是趋势,但至少截止目前更多生信软件是用perl写的。 所以,如果刚开始学,建议主打python, 看懂perl。R :数据处理、统计、绘图、数据分析。 R语言的数据结构跟其他语言差异较大、而且总感觉语法比较散,不好记。但是R的软件包却异常强大。数据处理的reshape2, dplyr;绘图的ggplot2;还有Bioconctor里的几千个包。不得不会。
⑶ perl和python区别是什么
python与perl区别在于:
python使用fetchall()函数后,一次获取所有行。
perl则是每读取一次获取一条记录。
关于缩进:
python很注重缩进的,有时看起来是对齐的,但是还是会报缩进错误。此种情况,一般是有的是TAB缩进,有的是空格缩进。
所以,一般同一个脚本中,使用同一处方式缩进(要么全TAB,要么全空格)。
相关推荐:《Python教程》
关于{} []
perl中的数组,哈希都是使用()qw生成 ,只不过是数组使用[]索引,哈希使用{}索引。
python()表示元组,[]表示数组 ,{}表示字典,即哈希。
关于函数:
perl使用{}和C一样,但是形参,都是用特殊变量@_ 来获取。关健字 sub ##PERL中大量使用特殊变量。
python 是使用缩进来区分函数语句块的,关健字 def。
关于python版本问题:
旧版本2.0的,print("这里面有中文") 打印在屏幕上会是乱码,打印到文件中则是正常的。
##在旧版本2.0,print如果有打印中文到屏幕上最好不要加()括号。 打印到文件则无所谓。
关于print
python --- 字符串后面可以不用加n 自动换行。
per --- 不会自动换行,需加上n。
关于执行SQL语句。
python与perl相同,使用变量来接收时,它是个二维数组,每一条查询结果,即为一个一维数组,每个字段,即为一维数组中的元素。
## 注意:
如果python执行SQL返回一行数据,则它为一维数组,返回多行数据,则为二维数组。
⑷ perl和python各自擅长什么领域
Perl 设 计之初就是为了方便编写复杂高效的系统脚本,它也是应该最为广泛的脚本编程语言。它在编程方面相当于瑞士军刀,对字符、文本文件处理能力很强,以前要求 shell+sed+awk+C才能完成的任务,只需perl脚本就可以完成了。而且应用领域一直在拓宽,支持面向对象程序设计。
Python 面向对象的动态公共语言,适于脚本编程和快速开发,它最显着的特点是作为编译语言(如C)和脚本语言(如perl)之间的桥接语言,它具有的强大功能,可扩充性及面向对象的特征使其成为大规模应用程序开发工具。
关于强类型Perl语言中,数据的类型,取决于数据所处的上下文。
Python语言中,数据类型,是数据自身确定的。Python因此一般被认为是强类型语言,而Perl则不是,不过Perl的爱好者一般不关心这种事情。实际上,换个角度来看,Python是固定的数据类型,变化的函数类型;而 Perl则是固定的函数类型,变化的数据类型。都很有意思。
关于 内置基础类型
Perl的基础类型叫做scalar,这是为了和后面的array和hash做区别。scalar可以是数字,也可以是字符串。基本上说,scalar非此即彼;换句话说,scalar既是数字,又是字符串。scalar到底是字符串,还是数字,完全取决于使用scalar的上下文,如果是一个处理字符串的函数,那么它是字符串;如果是一个处理数字的函数,那么它是数字。Perl会尽一切努力完成它们之间的转化,无论在你看来有多么荒诞。 Perl中,所有scalar都以$开头,所有以$开头的都是scalar。 Python的基础类型,同样,不是数字,就是字符串。但是,不可能既是数字,又是字符串。Python会判断变量到底是数字,还是字符串,以此来选择怎么解释函数;如果它找不到一个合适的解释,那么Python会抛出异常。一般来说,这种策略能够取悦一部分程序员,同时让另外一部分人感觉很不爽。
关于 复合类型
Perl有两种复合类型:array和hash。Python有三种复合类型:tuple, list, dict。 Python中的tuple+list,完全对应于Perl中的array;因此不存在谁提供的 类型更丰富这样的问题。
关于 创建Perl中创建array可以通过()。但是()到底是否会创建一个array,这取决于所处的上下文;换句话说,只有当上下文要求一个array时,()才会产生一个array。事实上,()可能创建一个scalar,也可能创建一个hash,这完全取决于上下文。
关于存取单个元素
Perl中我们可以用$foo[$bar]来表示foo这个array中的第$bar个元素。特别诡异的是,这个foo和$foo中的foo是完全不相干的,这回应了前面提到的Perl原则,一个符号到底什么意思,取决于上下文。并且,在$foo[$bar]这样一个上下文中,$bar会被Perl 搞成整数,无论它本来是什么。 Perl中,用一个越界的idx访问array是完全正常的,Perl会悄悄的扩展array。Python中,tuple或者是list,两者都通过lst[idx]这样的形式存取其中的元素。 Python中,用一个越界的idx访问array会触发一个异常。 Python中,提供了强大的slice功能。
关于做为整体的list
Perl中,用@开头的名字表示整个array,据说是因为@是array的字头。但是,又根据Perl的原则,@foo这样的array也可以被使用到一个需要scalar的环境中去,Perl会尽力把@foo转换成一个scalar,一般来说,这个scalar就是@foo的长度。
⑸ perl 、shell、python三种脚本语言那种好学、易用
perl、shell、python三种脚本语言的区别:
1、适用不同:shell是操作linux的基本,是必须学的。学shell就是学linux命令。perl有强大的正则表达式支持,对于文本处理非常强悍,玩linux不得不学。python作用一种面向对象的,能作为linux脚本的语言,学好之后能帮你很好地完成工作。
2、特点不同:Perl是一种能完成任务的语言。从一开始,Perl就设计成可以把简单工作简单化,同时又不失去处理困难问题能力的语言。它可以很容易操作数字,文本,文件和目录,计算机和网络,特别是程序的语言。
这种语言应该很容易运行外部的程序并且扫描这些程序的输出获取感兴趣的东西。而且它还应该很容易能把这些你感兴趣的东西交给其它程序做特殊的处理。当然,这种语言还应该很容易在任何现代的操作系统上可以移植地编译和运行。
shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shellscript(非交互)方式执行。
shellscript是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shellscript是命令行命令简单的组合到一个文件里面。Shell基本上是一个命令解释器,类似于DOS下的command.com。
它接收用户命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourneshell(sh)和Cshell(csh)。
Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格,Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。
3、优点不同:perl,用作文本处理比较好,可以作为系统的辅助工具。shell,用作系统维护、操作等方面。python,功能强大,模块多、跨平台能力好,完全面向对象,尤其适用做大型脚本程序的开发和快速开发。
(5)perl调用python扩展阅读:
erl比shell+sed+awk更强大,但学习两者并不冲突,通常是学习shell做为脚本编程的入门基础。而Python在应用领域则与前两者有很大的差别,无太大的可比性。面向不同的任务,可以只需用到其中的一种,也可能三种都要用到,所以究竟该学谁不学谁,需要由面对的任务来决定。
总之,shell是基础,其他是进阶辅助。
Shell脚本通常都是以.sh为后缀名的,这个并不是说不带.sh这个脚本就不能执行,只是大家的一个习惯而已。所以,以后你发现了.sh为后缀的文件那么它一定会是一个shell脚本了。
test.sh中第一行一定是“#!/bin/bash”它代表的意思是,该文件使用的是bash语法。如果不设置该行,那么你的shell脚本就不能被执行。’#’表示注释。后面跟一些该脚本的相关注释内容以及作者和创建日期或者版本等等。
⑹ 脚本语言lua,perl,python等在运行的时候修改代码会影响运行吗
不会的,这个文件在你用Python运行的时候,是先加载到内存中进行执行,而你另一个终端打开该代码,则是这个程序将文件读入内存并进行修改,之间在内存中是两个拷贝,而即使你修改后将他保存会磁盘,也不会影响Python现在运行的那个拷贝。。
当然如果是你的代码调用另一个文件则就是另一回事了,Python不会再程序一运行就加载所有文件,而是运行到import才加载,这样你在运行到import之前修改就会影响了。
⑺ Day59-用Perl和Python脚本提取FASTA中最长转录本氨基酸序列
这段时间因为一些不可描述的文章被整顿了,所以没有做学习笔记。加上最近开学,乱七八糟的事情很多,目测要下个礼拜开始上课才能够回归正轨。
最近做了一个事情就是,注释出来的初始基因组pep文件会存在许多个转录本,很多冗余的氨基酸序列,我们需要去除这些冗余,取最长的那个转录本。
对于序列只有一行的很容易可以用 grep 办到,但是还是那个问题,fasta格式存在自动换行问题,所以我们最好还是写脚本提取最长转录本比较稳妥,这里分享一下所用的脚本。
原数据格式基本如下:
我写的Perl脚本修改了原文件格式和顺序(哈希表的 sort 真是个谜),以后有时间我会考虑一下如何保留所有原格式输出,暂时将就着用吧。
另外同学依据我的需求也写了一个对应功能的Python脚本,不得不承认Python v3.0的字典在保留原顺序输出方面的能力就很强,这个脚本几乎对原文件没有改动,很实用。有时间的话会对它进行全方位的注释学习,希望自己能在Python脚本书写能力上有所进步【狗头苦笑】!