欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中遇到的小問(wèn)題及解決方法匯總

 更新時(shí)間:2017年01月11日 10:59:39   作者:超二的瘸子  
到年底了,現(xiàn)在的時(shí)間適合寫(xiě)點(diǎn)最近的小總結(jié),所以下面這篇文章主要介紹了Python中遇到的一些小問(wèn)題及解決方法,需要的朋友可以參考借鑒,下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。

本文會(huì)把學(xué)習(xí)過(guò)程中遇到的一些小問(wèn)題和解決辦法放在這里,以便于大家能夠更好地學(xué)習(xí)python。

一、Python的異常處理

因?yàn)橄氲阶约翰粩鄧L試寫(xiě)小程序的話會(huì)用到拋出異常信息來(lái)判斷哪里出現(xiàn)了問(wèn)題:

usage: raise [Exception [, args [, trackback]]]

上面是Python的raise的用法,下面是自己用這個(gè)方法實(shí)現(xiàn)異常的拋出方法:

def check_args(args):
 if not args.host:
 msg = 'Args missing! One of the following args should be specified \n' \
  '--host 192.168.1.1 \n' \
  '-f TargetFile \n'
 raise Exception(msg)

#參考別人的代碼模式,我這樣寫(xiě)來(lái)拋出異常.

二、list轉(zhuǎn)str

這個(gè)問(wèn)題是因?yàn)樽约旱臒o(wú)知吧:

命令行傳入的host(即ip地址)是list形式,想要通過(guò)list轉(zhuǎn)為str的格式之后來(lái)進(jìn)行socket.connect() , 報(bào)錯(cuò):

自己想象的姿勢(shì):

client.connect((str(args.host), args.p))

正確的姿勢(shì):

client.connect((''.join(args.host), args.p))

上圖證明自己的愚蠢(可能下次還會(huì)犯同樣的錯(cuò)):

三、argparse函數(shù)

出發(fā)的動(dòng)機(jī)是因?yàn)樽约簩?xiě)的小程序要通過(guò)命令行的形式傳參并執(zhí)行命令.

用自己的簡(jiǎn)單小實(shí)例來(lái)顯示函數(shù)的具體用法吧:

def parse_args():
 parser = argparse.ArgumentParser(prog = 'hello',
     formatter_class = argparse.RawTextHelpFormatter,
     description = '* A tiny toy for fun *\n'
     'By ST(www.********)',
     usage = 'hellPLC.py [options]')
 parser.add_argument('-host', metavar = 'HOST [HOST2 HOST3 ...]', type = str,
   default = '', nargs = '*',
   help = 'Scan the host form command line')

代碼很簡(jiǎn)單,一看就懂大概函數(shù)是什么樣子,重點(diǎn)是add_argument的參數(shù),當(dāng)你傳入的cmd參數(shù)是這種方式的話:

我們可以看到,需要在-p之后跟一個(gè)int型的參數(shù)才可以,還有另外一種形式.

parser.add_argument('-p', metavar = 'PORT', type = int,
   default = '')

這種方式不需要跟參數(shù),只需要類似于"python -h"這種形式就可以執(zhí)行并得到想要的結(jié)果:

這里就需要對(duì)這個(gè)函數(shù)的各個(gè)參數(shù)的功能有個(gè)基本的了解,這樣才能用起來(lái)舒服.

 parser.add_argument('-b', default= False, dest='b', action='store_true',
    help = 'Get the base info')

下圖就是我們可以跟的參數(shù),自己的問(wèn)題就是區(qū)分清楚action和dest這兩個(gè)參數(shù),還有default,type等.

四、正則匹配

這個(gè)東西有點(diǎn)高深了,最初的想法是使用正則來(lái)轉(zhuǎn)變接收到的數(shù)據(jù)的格式,問(wèn)過(guò)達(dá)哥之后原本recv到的數(shù)據(jù)在encode之后的類型是"str",之前自己的想法是把數(shù)據(jù)轉(zhuǎn)成list格式,之后提取之類的方便,但"str"類型也可以直接利用偏移來(lái)進(jìn)行分析也可以,直接用"str[]"就可以搞定,因?yàn)檫@個(gè)過(guò)程中不需要可視化的打印出來(lái),需要打印的是分析之后的結(jié)果,所以正則先用不到。

不過(guò)還是要把覺(jué)得不錯(cuò)的鏈接放一下:

Python入門(mén)篇之正則表達(dá)式

http://www.dbjr.com.cn/article/56436.htm

Python 匹配任意字符(包括換行符)的正則表達(dá)式寫(xiě)法

http://www.dbjr.com.cn/article/20654.htm

五、格式化字符串

 temp = '123456'
 print("word:%s" %temp)
 
 output: word:123456

很簡(jiǎn)單就可以搞定,但是當(dāng)時(shí)想要返回取多個(gè)返回值,一下子蒙住不知道怎么搞了,呵呵了~

 f.write ("Block Type: %s \n"
  "Block count: %s \n"
  %(block_type, block_count))
  return block_type, block_count

六、文件讀寫(xiě)操作

這個(gè)問(wèn)題別人的博客寫(xiě)的很好很詳細(xì)了

f = open(r'C:\Movie\test2.txt','w')

直接打開(kāi)一個(gè)文件,如果文件不存在則創(chuàng)建文件,只能只用寫(xiě)命令

f = open(r'C:\Movie\test2.txt')

打開(kāi)一個(gè)文件,只能只用讀命令

f.read([size])

size為讀取的長(zhǎng)度,以byte為單位,如果不寫(xiě)則讀取全部?jī)?nèi)容

f.readline([size])

讀一行,如果定義了size,有可能返回的只是一行的一部分。每讀取一次,文件操作符向下移動(dòng)一行。

f.readlines([size])

把文件每一行作為一個(gè)list的一個(gè)成員,并返回這個(gè)list。其實(shí)它的內(nèi)部是通過(guò)循環(huán)調(diào)用readline()來(lái)實(shí)現(xiàn)的。如果提供size參數(shù),size是表示讀取內(nèi)容的總長(zhǎng),也就是說(shuō)可能只讀到文件的一部分。

關(guān)于open模式,參數(shù)不同達(dá)到的效果也是不同的,比如我需要的是在一個(gè)日志文件中不斷的追加新的東西而不是每次都直接覆蓋掉,所以我用到了"a+"

關(guān)于open模式的參數(shù):

  1. w     以寫(xiě)方式打開(kāi)
  2. a     以追加模式打開(kāi)
  3. r+     以讀寫(xiě)模式打開(kāi)
  4. w+     以讀寫(xiě)模式打開(kāi)
  5. a+     以讀寫(xiě)模式打開(kāi) (我用到了這個(gè)模式,讀寫(xiě)模式不斷追加新的東西)
  6. rb     以二進(jìn)制讀模式打開(kāi)
  7. wb     以二進(jìn)制寫(xiě)模式打開(kāi)
  8. ab     以二進(jìn)制追加模式打開(kāi)
  9. rb+    以二進(jìn)制讀寫(xiě)模式打開(kāi)11 wb+    以二進(jìn)制讀寫(xiě)模式打開(kāi)12 ab+    以二進(jìn)制讀寫(xiě)模式打開(kāi)

還有一些操作的區(qū)別,我當(dāng)時(shí)用到的問(wèn)題是f.readline,每次都是讀文件的一行,沒(méi)有把全部的內(nèi)容都讀出來(lái),所以區(qū)別還是很明顯,要區(qū)分清楚.

寫(xiě)操作的用法和區(qū)別:

f.write(“str”)

把str寫(xiě)到文件中,write()方法不會(huì)在str后加上一個(gè)換行符

f.writelines(seq)

把seq的內(nèi)容全部寫(xiě)到文件中(多行一次性寫(xiě)入)。這個(gè)函數(shù)也只是忠實(shí)地寫(xiě)入,不會(huì)在每行后面加上任何東西。

f.close()

關(guān)閉文件。在讀命令或者寫(xiě)命令結(jié)束時(shí),需要用關(guān)閉。如果文件關(guān)閉后依然操作,會(huì)拋出ValueError: I/O operation on closed file

f.tell()

返回文件操作標(biāo)記的當(dāng)前位置,以文件的開(kāi)頭為起點(diǎn)

fp.next()

返回下一行內(nèi)容,并將文件操作標(biāo)記位移到下一行。把一個(gè)file用于for … in file這樣的語(yǔ)句時(shí),就是調(diào)用next()函數(shù)來(lái)實(shí)現(xiàn)遍歷的。

fp.seek(offset[,whence])

將文件操作標(biāo)記為移動(dòng)到offset位置。

七、遇到的報(bào)錯(cuò)情況

自己不想要定義太多的函數(shù),個(gè)人感覺(jué)是想要將不同功能的函數(shù)進(jìn)行分類,因此我嘗試用到了類,知道自己這么做可能是想法上就有些不對(duì)的,但是想要瞎試試看看效果,所以結(jié)果就是報(bào)錯(cuò)了.

如圖,這是別人遇到的方法,和我的是一樣的,我沒(méi)有定義靜態(tài)的函數(shù),所以每次使用之前都需要進(jìn)行實(shí)例化才能調(diào)用.

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。

相關(guān)文章

  • Python使用回溯法子集樹(shù)模板解決迷宮問(wèn)題示例

    Python使用回溯法子集樹(shù)模板解決迷宮問(wèn)題示例

    這篇文章主要介紹了Python使用回溯法解決迷宮問(wèn)題,簡(jiǎn)單講述了迷宮問(wèn)題的原理并結(jié)合實(shí)例形式分析了Python基于回溯法子集樹(shù)模板解決迷宮問(wèn)題的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2017-09-09
  • java中的控制結(jié)構(gòu)(if,循環(huán))詳解

    java中的控制結(jié)構(gòu)(if,循環(huán))詳解

    這篇文章簡(jiǎn)單地介紹了java中的控制結(jié)構(gòu)(if,循環(huán))文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,下面我們來(lái)學(xué)習(xí)下吧
    2019-06-06
  • pytorch: Parameter 的數(shù)據(jù)結(jié)構(gòu)實(shí)例

    pytorch: Parameter 的數(shù)據(jù)結(jié)構(gòu)實(shí)例

    今天小編就為大家分享一篇pytorch: Parameter 的數(shù)據(jù)結(jié)構(gòu)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • python編寫(xiě)學(xué)生成績(jī)管理系統(tǒng)的邏輯結(jié)構(gòu)及功能實(shí)現(xiàn)

    python編寫(xiě)學(xué)生成績(jī)管理系統(tǒng)的邏輯結(jié)構(gòu)及功能實(shí)現(xiàn)

    這篇文章主要為大家介紹了python編寫(xiě)學(xué)生成績(jī)管理系統(tǒng)實(shí)現(xiàn)八個(gè)功能示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • Python中查找素因數(shù)的方法詳解

    Python中查找素因數(shù)的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何在 Python 中執(zhí)行素因數(shù)分解,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以一起學(xué)習(xí)一下
    2023-10-10
  • python里大整數(shù)相乘相關(guān)技巧指南

    python里大整數(shù)相乘相關(guān)技巧指南

    對(duì)于大整數(shù)計(jì)算,一般都要用某種方法轉(zhuǎn)化,否則會(huì)溢出。但是python無(wú)此擔(dān)憂了。Python支持“無(wú)限精度”的整數(shù),一般情況下不用考慮整數(shù)溢出的問(wèn)題,而且Python Int類型與任意精度的Long整數(shù)類可以無(wú)縫轉(zhuǎn)換,超過(guò)Int 范圍的情況都將轉(zhuǎn)換成Long類型。
    2014-09-09
  • Django 響應(yīng)數(shù)據(jù)response的返回源碼詳解

    Django 響應(yīng)數(shù)據(jù)response的返回源碼詳解

    這篇文章主要介紹了Django 響應(yīng)數(shù)據(jù)response的返回源碼詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 使用Python編寫(xiě)Prometheus監(jiān)控的方法

    使用Python編寫(xiě)Prometheus監(jiān)控的方法

    今天小編就為大家分享一篇關(guān)于使用Python編寫(xiě)Prometheus監(jiān)控的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • Pytest?Allure的安裝與應(yīng)用教程詳解

    Pytest?Allure的安裝與應(yīng)用教程詳解

    Allure?是由?Java?語(yǔ)?開(kāi)發(fā)的?個(gè)輕量級(jí),靈活的測(cè)試報(bào)告?具,這篇文章主要為大家詳細(xì)介紹了Allure的安裝與具體應(yīng)用,感興趣的可以了解下
    2024-03-03
  • python實(shí)現(xiàn)發(fā)送和獲取手機(jī)短信驗(yàn)證碼

    python實(shí)現(xiàn)發(fā)送和獲取手機(jī)短信驗(yàn)證碼

    這篇文章主要介紹了python實(shí)現(xiàn)發(fā)送和獲取手機(jī)短信驗(yàn)證碼的相關(guān)資料,講解了python如何解決接口測(cè)試獲取手機(jī)驗(yàn)證碼問(wèn)題,感興趣的小伙伴們可以參考一下
    2016-01-01

最新評(píng)論