国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

head first python(第三章)–學習筆記

Shisui / 1804人閱讀

摘要:增加邏輯來處理首先通過觀察方法對于不同的數據返回的值是不同的。所以需要加一些標記,標識數據不符合期望的格式時會出現數據無法正常訪問時會出現。

1.介紹基礎文件,輸入,輸出

open()
打開文件,一次傳入一行數據,可以結合for循環和readline()來使用

close()
用來關閉open打開的文件

the_file = open("sketch.txt")

the_file.close()

例子:

>>> data = open("/root/python_test/site_list.txt")
>>> print(data.readline())
www.godblessyuan.com

一些基礎的目錄管理函數

>>> import os
>>> os.getcwd()   #獲取當前目錄
"/root"
>>> os.chdir("/root/python_test")  #切換目錄
>>> os.getcwd()
"/root/python_test"
>>> 
2.需要對數據做一些處理,例如像分隔它,以冒號為分界符
>>> data = open("/root/python_test/headfirstpython/sketch.txt")
>>> for each_line in data:
...     (role,line_spoken) = each_line.split(":")   #這里使用idel時候,需要注意的是代碼之間的縮進
...     print role
...     print line_spoken
... 

Other Man
 Anyway, I did.

Man
 You most certainly did not!

Traceback (most recent call last):
  File "", line 2, in 
ValueError: too many values to unpack

遇到報錯了,報錯意思大概是太多值導致沒有被處理,檢查發現是因為有些數據是超過一個冒號的,所以這些數據會出錯,因為split()處理不了,但是檢查了split函數的使用說明,發現是可以支持這種情況的,

>>> help(each_line.split)
Help on built-in function split:

split(...)
S.split([sep [,maxsplit]]) -> list of strings

Return a list of the words in the string S, using sep as the
delimiter string.  If maxsplit is given, at most maxsplit
splits are done. If sep is not specified or is None, any
whitespace string is a separator and empty strings are removed
from the result.
(END) 
  

1.檢查方式可以參考上面的方法。

2.支持這種情況的參數是一個叫maxsplit的參數,如果有maxsplit的話,那么至多是maxsplit的數量以上的分界符才會被處理,這樣就很好的避免太多分界符的情況了。

如這樣:

data = open("sketch.txt")

for each_line in data:
    (role, line_spoken) = each_line.split(":", 1)
    print role
    print line_spoken

data.close()

不過,即使加了參數,還是遇到報錯了

Man
 Oh no you didn"t!

Other Man
 Oh yes I did!

Man
 Oh look, this isn"t an argument!

Traceback (most recent call last):
  File "", line 2, in 
ValueError: need more than 1 value to unp

這里是說需要超過一個值去處理,查看了數據,發現是有些數據沒有冒號導致程序處理失敗。

3.增加邏輯來處理

首先通過觀察find()方法對于不同的數據返回的值是不同的。

>>> each_line = "iiiii" 
>>> each_line.find(":")
-1
>>> each_line = "iiiii:"
>>> each_line.find(":") 
5
>>> 

然后可以使用的邏輯有2種,一種是if判斷,另外一種是try:expoet

try:
    你的代碼(可能會導致運行錯誤的)
except:
    錯誤回復代碼

這種方式的機制是通過捕獲某代碼的錯誤,然后執行響應的修復代碼,例子:

data = open("sketch.txt")

for each_line in data:
    try:
        (role, line_spoken) = each_line.split(":", 1)
        print role
        print line_spoken
    except:
        pass

data.close()

如果

        (role, line_spoken) = each_line.split(":", 1)
        print role
        print line_spoken

這里有其中一句代碼是執行失敗的,都會轉到pass里面去,pass代表空語句,或者null,什么也不做。

或者就是使用最簡單的if判斷

for each_line in data:
    if not each_line.find(":") == -1:   #not關鍵字是將一個條件取反
        (role, line_spoken) = each_line.split(":", 1)
        print(role, end="")
        print(" said: ", end="")
        print(line_spoken, end="")

data.close()

不過需要注意的是,像下面這種多重try:except的代碼是很容易影響到我們判斷那一部分代碼才是真正有問題的代碼,因為無論里面和外面的try出錯了,都會返回 print("The datafile is missing!"),這樣就不能判斷是那部分代碼有問題了。

try:
    data = open("sketch.txt")

    for each_line in data:
        try:
            (role, line_spoken) = each_line.split(":", 1)
            print role
            print line_spoken
        except:
            pass

    data.close()
except:
    print("The datafile is missing!")

所以需要加一些標記,標識(ValueError-數據不符合期望的格式時會出現,IOError-數據無法正常訪問時會出現。)

try:
    data = open("sketch.txt")

    for each_line in data:
        try:
            (role, line_spoken) = each_line.split(":")
            print role
            print line_spoken
        except ValueError:
            pass

    data.close()
except IOError:
    print("The datafile is missing!")

http://www.godblessyuan.com/2015/04/20/head_first_python_chapter_3_lea...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37506.html

相關文章

  • head first python(第一章)–學習筆記

    摘要:第一章學習流程圖安裝這里是用的,除了之外,和都自帶了,只是版本沒有這么新。是區分大小寫的。可以根據多維數組來理解。知識點補充里列表是打了激素的數組,意味著列表比數組更厲害,更好用。的語句的縮進是必須規范的。 head first python(第一章)--學習流程圖 showImg(http://source1.godblessyuan.com/blog_headfirstpytho...

    TerryCai 評論0 收藏0
  • head first python(第四章)–學習筆記

    showImg(http://source1.godblessyuan.com/blog_head_first_python_chapter_4_20150426.jpg); 其實持久存儲不僅僅包含文件,還包括數據庫等,本章先介紹一部分,先熟悉一下。 熟悉python數據 #!/usr/bin/python # -*- coding: utf-8 -*- man = [] other =...

    venmos 評論0 收藏0
  • head first python(第五章)–學習筆記

    摘要:原來的順序會丟失。原數據的順序依然保留。方法串聯第一個方法應用到數據中,然后再將處理好的數據應用到第二個方法中。例子函數串聯每個函數會取得數據,對他完成某個操作,然后把轉換后的數據繼續向下傳遞到下一個函數。 showImg(http://source1.godblessyuan.com/blog_head_first_python_chapter_5_20150427.jpg); 1...

    aikin 評論0 收藏0
  • head first python(第二章)–學習筆記

    摘要:第二章學習流程圖函數轉換為模塊函數轉換為模塊后,就可以靈活的使用模塊,方便代碼分類,避免代碼堆積在一個文件上。使用命令打包代碼,生成發布包打包后會生成目錄和文件發布后會多了目錄和文件,這個是發布的生成的包和相關配置文件。 head first python(第二章)--學習流程圖showImg(http://source1.godblessyuan.com/blog_head_firs...

    import. 評論0 收藏0
  • head first python(第六章)–學習筆記

    摘要:代碼改為根據數據結構,第一個數據是名字,第二個是生日,第二個之后是成績,所以分別將相關數據賦值到字典里面。是否知道何時使用列表而何時使用字典,這正式從好的程序員中區分出優秀程序員的一個標準。特定函數應用特定數據。更加正規的做法是建立類。 showImg(http://source1.godblessyuan.com/blog_head_first_python_chapter_6_20...

    piapia 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<