python腳本編寫與執(zhí)行

? ? ? ?Python不使用括號來表示代碼的類和函數(shù)定義塊或流程控制蝌蹂。代碼塊是由行縮進许饿,這是嚴格執(zhí)行表示方式噩凹。在縮進位的數(shù)目是可變的朦促,但是在塊中的所有語句必須縮進相同的量,在Python中所有的連續(xù)線縮進的空格數(shù)同樣的會結(jié)成塊栓始。

Python中命名規(guī)則


Python?腳本與其它語言的腳本的基本格式完全一樣,本身都是純文字文件血当,而在文件頭要以#!?指定直譯程序(解釋器)的位置:

[root@importer1~]# whereis python

python: /usr/bin/python2.6 /usr/bin/python/usr/lib/python2.6 /usr/lib64/python2.6 /usr/include/python2.6/usr/share/man/man1/python.1.gz

#可以在腳本首行指定路徑如下

#!/usr/bin/python

習(xí)慣上會給Python?程序取個擴展名.py?幻赚,但Linux?的腳本并不需要綴上擴展名禀忆,把*.py?改成*?,程序一樣會正常執(zhí)行落恼。.py?擴展名對Python?仍有特別的意義箩退,但只在撰寫Python?模塊的時候才有用處。

對于指定Python?解釋器標頭佳谦,一般還有另外一種寫法戴涝。

#!/usr/bin/envpython

于是會以/usr/bin/env?程序去環(huán)境變量中調(diào)用python?解釋器,處理Python?程序檔案钻蔑。

Windows\linux腳本格式轉(zhuǎn)換

? ? ? windows下編輯的python文件在linux系統(tǒng)上執(zhí)行時啥刻,一個常見錯誤是“-bash:

/usr/bin/autocrorder: /usr/bin/python^M: bad interpreter: No such file or

directory”。

這是不同系統(tǒng)編碼格式引起的:在windows系統(tǒng)中編輯的.sh .py文件可能有不可見字符咪笑,所以在Linux系統(tǒng)下執(zhí)行會報以上異常信息可帽。一般是因為windows行結(jié)尾和linux行結(jié)尾標識不同造成的。有如下解決方法:

在windows下轉(zhuǎn)換窗怒,利用一些編輯器如UltraEdit或EditPlus等工具先將腳本編碼轉(zhuǎn)換映跟,再放到Linux中執(zhí)行。轉(zhuǎn)換方式如下(UltraEdit):File-->Conversions-->DOS->UNIX即可扬虚。

linux下直接替換努隙,sed -i 's/^M//g'??filename?(注意^M 在linux 下寫法按^M 是回車換行符,輸入方法是按住CTRL+v,松開v,按m)。

?????? 也可用vi編輯在腳本中轉(zhuǎn)換辜昵,首先要確保文件有可執(zhí)行權(quán)限

#>chmod +x filename

#然后修改文件格式

#>vi filename

?

#利用如下命令查看文件格式

#:set ff :setfileformat

#可以看到如下信息

#fileformat=dos fileformat=unix


#利用如下命令修改文件格式

#:set ff=unix????????????????? :set fileformat=unix

#回車荸镊、存盤,并退出


? ? ? 在Windows中 '\r'? 回車(Carriage Return)路鹰,回到當前行的行首贷洲,而不會換到下一行, '\n'? 換行(Line Feed),換到當前位置的下一行晋柱,而不會回到行首优构。

? ? ? ? 在計算機還沒有出現(xiàn)之前,有一種叫做電傳打字機(Teletype Model 33雁竞,Linux/Unix下的tty概念也來自于此)的玩意钦椭,每秒鐘可以打10個字符。但是它有一個問題碑诉,就是打完一行換行的時候彪腔,要用去0.2秒,正好可以打兩個字符进栽。要是在這0.2秒里面德挣,又有新的字符傳過來,那么這個字符將丟失快毛。于是格嗅,研制人員想了個辦法解決這個問題番挺,就是在每行后面加兩個表示結(jié)束的字符。一個叫做“回車”屯掖,告訴打字機把打印頭定位在左邊界玄柏;另一個叫做“換行”,告訴打字機把紙向下移一行贴铜。這就是“換行”和“回車”的來歷粪摘,從它們的英語名字上也可以看出一二。

后來绍坝,計算機發(fā)明了徘意,這兩個概念也就被搬到了計算機上。那時陷嘴,存儲器很貴映砖,一些科學(xué)家認為在每行結(jié)尾加兩個字符太浪費了,加一個就可以灾挨。于是就出現(xiàn)了分歧邑退。

Unix系統(tǒng)里,每行結(jié)尾只有“<換行>”劳澄,即"\n"地技;Windows系統(tǒng)里面,每行結(jié)尾是“<換行><回 車>”秒拔,即“\r\n”莫矗;Mac系統(tǒng)里,每行結(jié)尾是“<回車>”砂缩,即"\n"作谚。一個直接后果是,Unix/Mac系統(tǒng)下的文件在 Windows里打開的話庵芭,所有文字會變成一行妹懒;而Windows里的文件在Unix/Mac下打開的話,在每行的結(jié)尾可能會多出一個^M符號双吆。

Python?直譯器還會讀取另一組格式為# -*- setting

-*-?的標頭(?通常接在第一行以后)?眨唬,其中常用的是:

# -*- coding: UTF-8 -*-

用途是指定腳本中包含了非ASCII字符?。如果你想要寫中文批注好乐,這就非常重要匾竿;Python?自己有一套字符編碼轉(zhuǎn)換的機制,實作在codecs?模塊里面蔚万,但直到Python 2.4?之前岭妖,繁體中文常用的Big5?編碼并未進入標準的codecs?模塊。如果腳本使用了Python?看不懂的字符編碼(?就是指華文世界用的Big5?和GB)?,程序雖然仍可執(zhí)行昵慌,但Python?解釋器會送出警告苔巨。使用上述語句,僅指明腳本中包含了非ASCII字符废离,而并未將字符編碼轉(zhuǎn)換為utf-8編碼。如果需要將字符編碼改為utf-8礁芦,則需要在保存的時候選擇保存為utf-8格式蜻韭。

Windows下如果要執(zhí)行.py腳本,在命令行中通過 python *.py這樣的格式運行柿扣,這種情況需要將.py文件放入python.exe程序所在目錄下肖方。另一種方式是通過python的IDLE打開.py文件,然后按F5在python

shell內(nèi)運行未状。

Python腳本語句注釋

? ? ? ?python單行注釋符號(#)俯画,井號(#)常被用作單行注釋符號,在代碼中使用#時司草,它右邊的任何數(shù)據(jù)都會被忽略艰垂,當做是注釋。在python中也會有注釋有很多行的時候埋虹,這種情況下就需要批量多行注釋符了猜憎。多行注釋是用三引號’’’ ’’’包含的。

長字符串的跨行連接

? ? ? ?一個(對)雙引號或單引號一般用于引用寫在一行的字符串搔课,如s1="hello,world."胰柑。但如果字符串很長,需要寫成多行爬泥,就用到了續(xù)行符\柬讨。

>>> s1="hello,?? \

... world"

>>> s1

'hello,?? world'

>>>?

???? 除最后一行字符串外,后面加上 \ 即可實現(xiàn)續(xù)行袍啡。續(xù)行符(\)多用于一行寫不下的情況踩官,\前可以有多個空格,空格也會加到原字符串中葬馋。續(xù)行字符之后的一行中卖鲤,縮進并不重要。

?????? 要避免空格的出現(xiàn)畴嘶,需要借助于連接符+蛋逾。但要注意連接符和續(xù)行符之間有空格。

>>> s2="hello,"+ \

???????? " chen ping"

>>> s2

'hello, chen ping'

>>>?

  在此基礎(chǔ)上窗悯,如果使用三個雙引號的話区匣,連行符就省了,即:

>>>s2=""" hello’s

... world

...haha!"""

>>> s2

'hello’s\nworld\nhaha!'

>>>?

  這種情況下,調(diào)用顯示s1時為 hello’s\nworld\nhaha亏钩,注意其中的換行符\n莲绰。可以看出姑丑,以上這兩者還是有區(qū)別的蛤签,前面的連行符(\)需要顯式寫出,但實際不包含在字符串中的栅哀;而使用三個雙引號時換行符(\n)不用顯式寫出震肮,但實際是隱式包含于字符串中的。

? ? ? ?python 三引號的形式用來輸入多行文本留拾,也就是說在三引號之間輸入的內(nèi)容將被原樣保留戳晌,其中的單號和雙引號不用轉(zhuǎn)義,其中的不可見字符比如/n和/t都會被保留痴柔,這樣的好處是你可以替換一些多行的文本沦偎。所見即所得,對于一段html或xml格式的字符串時用三引號更直觀點(此時要用單引號或雙引號時候需要進行轉(zhuǎn)義)咳蔚。

而在PHP當中單引號和雙引號的有些是不一樣的豪嚎,雖然表示的字符串,但是在php的單引號解析速度比雙引號快屹篓,如果在Python用單號那么在字符串中就可以直接收寫雙引號了疙渣,反之亦然。這就是python為什么允許用兩種方式的原因堆巧。在實際應(yīng)用中妄荔,python 單引號和python 雙引號用得比較多,有兩種表示方式后谍肤,就不用老用轉(zhuǎn)義字符了啦租。

此外,還可以把一個長字符串寫在一個()中荒揣,達到拆分成多行書寫篷角。如

js_fun2=("function

investfun(investamount){for(i=0;i<10;i++){var "

???????? "invest=document.getElementsByClassName('projectList')[0].getElementsByTagName('a')[i];"

???????? "var

invest_text=invest.querySelector('div.INVESTING').innerText;"

???????? "if(invest_text=='立即投資')"

???????? "{var

invest_remainamount=invest.querySelector('div.INVESTING').nextSibling.innerText;"

???????? "var

remainamount=Number(invest_remainamount.match(/\d+/g)"

???????? ");if(remainamount>investamount){invest.click();break;}}}};investfun("+str(amount)+");")


Python腳本中調(diào)用shell命令和工具

1、os.system(string cmd | scriptname.sh)

? ? ? ?可用于在遠程類unix上執(zhí)行shell 命令系任,如在android底層命令行上執(zhí)行恳蹲。該操作將輸出打印到標準輸出中,這也意味著無法用變量去接收命令執(zhí)行結(jié)果俩滥,只返回腳本退出時的狀態(tài)碼嘉蕾,如

>>>a=os.system("cat /proc/cpuinfo")

>>>a

0

2、os.popen(cmd)

  要得到命令的輸出內(nèi)容霜旧,只需再調(diào)用下read()或readlines()等 错忱。

[NSOS1.1 ~]# python

Python2.4.3 (#1, Dec 10 2010, 17:24:35)

[GCC4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2

Type "help","copyright", "credits" or "license" for moreinformation.

>>> import os

>>> b=os.popen("cat /usr/local/liveupdate/version").readlines();???????????? #按行讀取,返回列表

>>> b

['#Local version information,SHOULD NOT be modified.\n', 'Product_name=Traffic Control\n','Current_Version=5.0\n', 'Last_Patch_SN=1\n', 'DB_Patch_SN=0\n','Last_Build_SN=0\n', 'Last_Hotfix_SN=0\n', 'Type=tc\n']

>>> b[1]

'Product_name=Traffic Control\n'

>>>type(b)

>>>?


給Python腳本傳參數(shù)

? ? ? 如果想對python腳本傳參數(shù),需要先導(dǎo)入模塊:sys以清。

腳本調(diào)用方式為

[root@localhosttest]#python downloadximala.py? 參數(shù)1 參數(shù)2 …

? ? ? 則在腳本找那個儿普,可使用變量來接收這些參數(shù),其中掷倔,腳本名為 sys.argv[0]眉孩,參數(shù)1為sys.argv[1],參數(shù)2為?sys.argv[2]勒葱,各參數(shù)以空格分割勺像,如果參數(shù)中帶有空格,需要用引號引用起來错森。

如果腳本中引用的參數(shù)超過了傳參的個數(shù),將會報IndexError: list index out of range錯誤篮洁。

腳本退出代碼涩维,sys.exit(0)?表示正常退出??,sys.exit(1)表示非正常退出袁波。

Python 交互命令行中執(zhí)行.py文件

? ? ? 只需要3個步驟瓦阐,

1.? ? ? ? import?sys

2.? ? ? ? 往系統(tǒng)路徑中加入自己存放py文件的地址

>>>sys.path.append("/newtest")

3.? ? ? ? 然后就可以開始通過import的方法導(dǎo)入,如從test.py文件中加載所有的內(nèi)容

>>>from test import *

? ? ? ? ? 這樣就可以使用test.py中相關(guān)的方法和內(nèi)容了篷牌。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末睡蟋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子枷颊,更是在濱河造成了極大的恐慌戳杀,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夭苗,死亡現(xiàn)場離奇詭異信卡,居然都是意外死亡,警方通過查閱死者的電腦和手機题造,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門傍菇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人界赔,你說我怎么就攤上這事丢习。” “怎么了淮悼?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵咐低,是天一觀的道長。 經(jīng)常有香客問我敛惊,道長渊鞋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮锡宋,結(jié)果婚禮上儡湾,老公的妹妹穿的比我還像新娘。我一直安慰自己执俩,他們只是感情好徐钠,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著役首,像睡著了一般尝丐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上衡奥,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天爹袁,我揣著相機與錄音,去河邊找鬼矮固。 笑死失息,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的档址。 我是一名探鬼主播盹兢,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼守伸!你這毒婦竟也來了绎秒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤尼摹,失蹤者是張志新(化名)和其女友劉穎见芹,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蠢涝,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡辆童,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了惠赫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片把鉴。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖儿咱,靈堂內(nèi)的尸體忽然破棺而出庭砍,到底是詐尸還是另有隱情,我是刑警寧澤混埠,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布怠缸,位于F島的核電站,受9級特大地震影響钳宪,放射性物質(zhì)發(fā)生泄漏揭北。R本人自食惡果不足惜扳炬,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望搔体。 院中可真熱鬧恨樟,春花似錦、人聲如沸疚俱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽呆奕。三九已至养晋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間梁钾,已是汗流浹背绳泉。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留姆泻,地道東北人圈纺。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像麦射,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子灯谣,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一潜秋、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 5,746評論 0 10
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,383評論 0 5
  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項目接著寫寫一名3年工作經(jīng)驗的J...
    燕京博士閱讀 7,575評論 1 118
  • 在每個孩子的內(nèi)心深處,都存在一個宇宙胎许, 它以無限的廣度和深度而存在著峻呛。 孩子的宇宙是美好的,充滿靈性和...
    sunflower80閱讀 1,899評論 0 0
  • 只有遇見貴人,才有機會變成貴人穆碎,成為別人的貴人牙勘! 足夠幸運,才遇到我生命中的第一個貴人所禀,我的研究生導(dǎo)師——沈老師方面!...
    5ba1f256945d閱讀 494評論 0 3