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

資訊專欄INFORMATION COLUMN

python大佬養(yǎng)成計(jì)劃----difflib模塊

Shonim / 3630人閱讀

摘要:模塊為的標(biāo)準(zhǔn)庫(kù)模塊,無(wú)需安裝。并且支持輸出可讀性比較強(qiáng)的文檔,與下的命令相似。模塊打開(kāi)文件只能寫(xiě)入類型不管字符串是什么編碼方式。

difflib模塊
difflib為python的標(biāo)準(zhǔn)庫(kù)模塊,無(wú)需安裝。用來(lái)對(duì)比文本之間的差異。并且支持輸出可讀性比較強(qiáng)的HTML文檔,與LInux下的diff 命令相似。在版本控制方面非常有用。
codecs模塊
open打開(kāi)文件只能寫(xiě)入str類型,不管字符串是什么編碼方式。
但是有時(shí)候我們爬蟲(chóng)或者其他方式得到一些數(shù)據(jù)寫(xiě)入文件時(shí)會(huì)有編碼不統(tǒng)一的問(wèn)題,所以就一般都統(tǒng)一轉(zhuǎn)換為unicode。此時(shí)的open打開(kāi)文件會(huì)報(bào)錯(cuò)。
寫(xiě)入時(shí),如果參數(shù) 是unicode,則使用open()時(shí)指定的編碼進(jìn)行編碼后寫(xiě)入;如果是str,則先根據(jù)源代碼文件聲明的字符編碼,解碼成unicode后再進(jìn)行前述 操作。相對(duì)內(nèi)置的open()來(lái)說(shuō),這個(gè)方法比較不容易在編碼上出現(xiàn)問(wèn)題。
difflib對(duì)比
import  difflib
import codecs

# ["", "1 line", "2 line"]
text1 = """  
    1. Beautiful is better than ugly.
    2. Explicit is better than implicit.
    3. Simple is better than complex.
    4. Complex is better than complicated.
""".splitlines(keepends=True)


text2 = """  
    1. Beautifu  is better than ugly.
    2. Explicit is better than implicit.
    3. Simple is better than complex.
    4. Complex is better than complicated.
""".splitlines(keepends=True)



# 1. 以字符串方式展示兩個(gè)文本的不同, 效果如下:
d = difflib.Differ()
result = list(d.compare(text1, text2))
result = " ".join(result)
print(result)
"""
 -     1. Beautiful is better than ugly.
 ?                ^
 +     1. Beautifu  is better than ugly.
 ?                ^
       2. Explicit is better than implicit.
       3. Simple is better than complex.
       4. Complex is better than complicated.
"""


# 2. 以html方式展示兩個(gè)文本的不同, 瀏覽器打開(kāi):
d = difflib.HtmlDiff()
with codecs.open("diff.html", "w","utf-8") as f:
    f.write(d.make_file(text1, text2))


difflib示例
import  difflib
import codecs    
file1="D:python_needdata.txt"
file2="D:python_needcp.txt"


with open(file1)  as f1, open(file2) as f2:
    text1 = f1.readlines()
    text2 = f2.readlines()

d = difflib.HtmlDiff()
with codecs.open("passwd.html", "w","utf-8") as f:
    f.write(d.make_file(text1, text2))


封裝difflib模塊

使調(diào)用"mydiff 文件1 文件2"命令
生成一個(gè)html文件,網(wǎng)頁(yè)讀取兩者不同之處

#!/home/kiosk/anaconda2/envs/mysql3/bin/python3

#解釋器如上
"""如果要直接調(diào)用mydiff,需要添加文件到/usr/local/bin,
封裝difflib模塊,文件命名為mydiff
Terminal命令:sudo cp mydiff /usr/local/bin"""
import difflib
import os
import sys
"""mydiff /etc/passwd /tmp/passwd >>differ.html"""


if len(sys.argv) == 3:
    # 命令行跟隨的參數(shù)
    file1 = sys.argv[1]
    file2 = sys.argv[2]
    with open(file1) as f1 ,open(file2) as f2:
        text1 = f1.readlines()
        text2 = f2.readlines()
    d = difflib.HtmlDiff()
    with open("differ.html", "w") as f:
        f.write(d.make_file(text1, text2))
else:
    print("""
    Usage : %s 文件1 文件2 - 返回一個(gè)html頁(yè)面
    """ %(os.path.basename(sys.argv[0])))


文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/42412.html

相關(guān)文章

  • python大佬養(yǎng)成計(jì)劃----Flask藍(lán)圖

    摘要:使用藍(lán)圖的概念來(lái)制作應(yīng)用程序組件和支持應(yīng)用程序內(nèi)部或跨應(yīng)用程序的通用模式。藍(lán)圖可以大大簡(jiǎn)化大型應(yīng)用程序的工作方式,并為擴(kuò)展提供了在應(yīng)用程序上注冊(cè)操作的中心手段。相反,它是如何構(gòu)造或擴(kuò)展應(yīng)用程序的藍(lán)圖。 藍(lán)圖 之前我們已經(jīng)通過(guò)代碼了解了一些Flask基本的用法,現(xiàn)在出現(xiàn)一個(gè)問(wèn)題,我們要做的功能越來(lái)越多,路由是不是都要放在run文件中呢?例如我們?cè)诓煌奈募级x了一些路由,如果想要訪問(wèn)他...

    tianyu 評(píng)論0 收藏0
  • python大佬養(yǎng)成計(jì)劃----excel操作

    摘要:新型數(shù)據(jù)類型中存儲(chǔ)系列數(shù)據(jù),比較常見(jiàn)的數(shù)據(jù)類型有,除此之外,還有數(shù)據(jù)類型元組的只能通過(guò)訪問(wèn),模塊的子類不僅可以使用的訪問(wèn),還可以通過(guò)的進(jìn)行訪問(wèn)。可以將理解為中的結(jié)構(gòu),其首先將各個(gè)命名,然后對(duì)每個(gè)賦予數(shù)據(jù)。 namedtuple新型數(shù)據(jù)類型 Python中存儲(chǔ)系列數(shù)據(jù),比較常見(jiàn)的數(shù)據(jù)類型有l(wèi)ist,除此之外,還有tuple數(shù)據(jù)類型.tuple元組的item只能通過(guò)index訪問(wèn),coll...

    cpupro 評(píng)論0 收藏0
  • python大佬養(yǎng)成計(jì)劃----分布式進(jìn)程

    摘要:分布式進(jìn)程在和中,應(yīng)當(dāng)優(yōu)選,因?yàn)楦€(wěn)定,而且,可以分布到多臺(tái)機(jī)器上,而最多只能分布到同一臺(tái)機(jī)器的多個(gè)上。由于模塊封裝很好,不必了解網(wǎng)絡(luò)通信的細(xì)節(jié),就可以很容易地編寫(xiě)分布式多進(jìn)程程序。 分布式進(jìn)程 在Thread和Process中,應(yīng)當(dāng)優(yōu)選Process,因?yàn)镻rocess更穩(wěn)定,而且,Process可以分布到多臺(tái)機(jī)器上,而Thread最多只能分布到同一臺(tái)機(jī)器的多個(gè)CPU上。 Pytho...

    honmaple 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<