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腳本書寫能力上有所進步【狗頭苦笑】!