色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python進(jìn)行文件比對簡析

sally100 ? 來源:數(shù)字ICer ? 2023-03-21 17:24 ? 次閱讀

PythonIC中的應(yīng)用,主要處理的對象以文本為主,但在某些的情況下,文本文件非常巨大,比如上G的文件。

這個(gè)時(shí)候,利用gvimdiff,tkdiff對文件的比對是比較慢甚至卡的,Python有很強(qiáng)大的數(shù)據(jù)處理能力,這里使用zip命令可以非常高效的進(jìn)行文件比對。

下面腳本參考:

用法:./diff.py test1.log test2.log

./diff.pytest1.logtest2.log

[NOTE]:Found(diff/total):564/5664differentlines
[NOTE]:Fileisdifferent
[NOTE]:Alldifferentlinesaresavedinfile:diffout.rpt

不同行內(nèi)容輸出到diffout.rpt文件中;

#!/tools/python-3.6.12/bin/python3.6
#-*-coding:UTF-8-*-
importos
importsys

iflen(sys.argv)>1:
file1=sys.argv[1]
file2=sys.argv[2]
else:
print("[ERROR]======Pleaseentertwofile_path")
print("[Usage]:Pythonscript.py")
sys.exit()

defcompare_files(file1,file2):
total_lines=0
different_lines=0
withopen(file1,'r')asf1,open(file2,'r')asf2,open('diffout.rpt','w')asf_out:
#逐行比較兩個(gè)文件
fori,(line1,line2)inenumerate(zip(f1,f2)):
ifline1!=line2:
f_out.write('row'+str(i+1)+'isdifferent:
')
f_out.write('	file1:'+line1.rstrip()+'
')
f_out.write('	file2:'+line2.rstrip()+'
')
different_lines+=1
total_lines+=1
iftotal_lines==0:
print('Bothfilesareempty')
ifdifferent_lines==0:
print('Fileissame')
else:
print('[NOTE]:Found(diff/total):{}/{}differentlines'.format(different_lines,total_lines))
print('[NOTE]:Fileisdifferent')
print('[NOTE]:Alldifferentlinesaresavedinfile:diffout.rpt')

compare_files(file1,file2)

其中簡單說明兩個(gè)函數(shù):enumerate()和zip(f1, f2)

enumerate() 是 Python 內(nèi)置函數(shù),它接受一個(gè)可迭代對象(如列表、元組、字符串等)作為輸入,返回一個(gè)枚舉對象。

這個(gè)枚舉對象包含每個(gè)元素的索引和值,可以用來遍歷序列時(shí)獲取當(dāng)前元素的索引。

以下是一個(gè)使用 enumerate() 函數(shù)的示例:

fruits=['apple','banana','cherry']

fori,fruitinenumerate(fruits):
print(i,fruit)

在上面的代碼中,enumerate() 函數(shù)將 fruits 列表轉(zhuǎn)換為一個(gè)枚舉對象,遍歷該對象時(shí),每個(gè)元素會被拆分成兩部分,一部分是索引,一部分是值。

輸出結(jié)果:

0apple
1banana
2cherry

在循環(huán)體內(nèi),我們可以使用 i 變量來訪問當(dāng)前元素的索引,使用 fruit 變量來訪問當(dāng)前元素的值。

zip(f1, f2) 是將兩個(gè)可迭代對象 f1 和 f2 中的對應(yīng)元素一一配對,生成一個(gè)新的迭代器;

在比較文件的過程中,zip() 函數(shù)可以用來同時(shí)遍歷兩個(gè)文件對象 f1 和 f2,逐行比較它們的內(nèi)容。

這里再額外提一個(gè)利用difflib 模塊進(jìn)行文件比對

使用 difflib 模塊進(jìn)行文件比對可以得到更詳細(xì)的文件差異信息。difflib 模塊提供了多種比對算法和函數(shù),可以用來比較文本文件、代碼文件等;

使用 difflib.HtmlDiff() 類來生成差異信息的 HTML 格式。

下面是一個(gè)示例代碼,它比對兩個(gè)文件并將差異信息以 HTML 格式輸出到文件difflib.html 中

#!/tools/python-3.6.12/bin/python3.6
#-*-coding:UTF-8-*-

importos
importsys
importdifflib

iflen(sys.argv)>1:
file1=sys.argv[1]
file2=sys.argv[2]
else:
print("[ERROR]======Pleaseentertwofile_path")
print("[Usage]:Pythonscript.py")
sys.exit()

defdiff_files(file1,file2,output_file):
#讀取兩個(gè)文件的內(nèi)容
withopen(file1,'r')asf1,open(file2,'r')asf2:
text1=f1.read()
text2=f2.read()

#生成差異信息的HTML格式
d=difflib.HtmlDiff()
html=d.make_file(text1.splitlines(),text2.splitlines())

#將HTML內(nèi)容寫入文件
withopen(output_file,'w')asf:
f.write(html)
print("
Diffcompleted.")

if__name__=='__main__':
diff_files(file1,file2,'difflib.html')

上面的代碼中,使用 difflib.HtmlDiff() 類的 make_file() 方法生成差異信息的 HTML 格式。

注意要使用 splitlines() 方法將文本轉(zhuǎn)換為行列表。

00079cec-bc23-11ed-bfe3-dac502259ad0.png

生成的 HTML 文件中,差異信息會以表格形式呈現(xiàn),每一行的左側(cè)顯示行號,右側(cè)顯示該行的內(nèi)容。

這種格式的輸出相對于純文本格式的輸出更容易閱讀和理解,特別是在需要比對較長文本時(shí),能夠提高比對效率和結(jié)果的準(zhǔn)確性。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • HTML
    +關(guān)注

    關(guān)注

    0

    文章

    278

    瀏覽量

    35213
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4792

    瀏覽量

    84628

原文標(biāo)題:Python進(jìn)行文件比對

文章出處:【微信號:數(shù)字ICer,微信公眾號:數(shù)字ICer】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    python文件如何打包成exe可執(zhí)行文件

    python文件打包成exe可執(zhí)行文件前言  也許我們不一定是專業(yè)的程序員,但是我們?nèi)匀豢梢酝ㄟ^代碼提高我們的效率,盡量少加班,多陪陪媳婦。再不行,讓代碼替我們干著重復(fù)的工作,我們有節(jié)省出來的時(shí)間
    發(fā)表于 07-06 06:34

    如何使用三種方式進(jìn)行文件的創(chuàng)建

    ,使用文本編輯器進(jìn)行創(chuàng)建,使用重定向符號進(jìn)行創(chuàng)建,接下來就演示如何使用這三種方式進(jìn)行文件的創(chuàng)建。使用touch命令進(jìn)行文件創(chuàng)建touch命令最初的作用是對
    發(fā)表于 12-15 08:42

    K510跑python的opencv可行嗎?打包為linux可執(zhí)行文件能跑嗎?

    想了解一下K510跑python的opencv可行嗎?打包為linux可執(zhí)行文件能跑嗎?
    發(fā)表于 09-14 09:01

    EPON技術(shù)

    EPON技術(shù) EPON是一個(gè)新技術(shù),用于保證提供一個(gè)高品質(zhì)與高帶寬利用率的應(yīng)用。   EPON在日本、韓國、中國大陸、中國臺灣及其它以以太網(wǎng)絡(luò)為基礎(chǔ)的地區(qū)都
    發(fā)表于 01-22 10:43 ?867次閱讀

    Perl編程之進(jìn)行文件操作

    到現(xiàn)在為止,我們介紹的P e r l程序都是獨(dú)立的程序。除了向用戶提供消息和接收來自鍵盤 的輸入信息外,它們無法與外界進(jìn)行通信。這種狀況將要改變。 P e r l是一種能夠進(jìn)行文件輸入
    發(fā)表于 03-26 15:59 ?0次下載

    設(shè)計(jì)仿真實(shí)例的運(yùn)行文件及C程序

    設(shè)計(jì)仿真實(shí)例的運(yùn)行文件及C程序
    發(fā)表于 03-04 14:01 ?27次下載

    鼠標(biāo)HID例程(中)

    鼠標(biāo) HID 例程 緊接《鼠標(biāo) HID 例程(上)》一文,繼續(xù)向大家介紹鼠 標(biāo) HID 例程的未完的內(nèi)容。
    發(fā)表于 07-26 15:18 ?0次下載

    STC89C52單片機(jī)的C語言進(jìn)行文件分裂的工程文件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是STC89C52單片機(jī)的C語言進(jìn)行文件分裂的工程文件免費(fèi)下載。
    發(fā)表于 10-14 08:00 ?2次下載
    STC89C52單片機(jī)的C語言<b class='flag-5'>進(jìn)行文件</b>分裂的工程<b class='flag-5'>文件</b>免費(fèi)下載

    Linux操作環(huán)境:diff實(shí)現(xiàn)文本比對方法

    我們在寫代碼的過程中,免不了會對代碼進(jìn)行一些修修改改。但經(jīng)常會出現(xiàn)改著改著,就不知道改完后與源文件的差異是怎樣的。這里,我們就需要一個(gè)文本比對工具來進(jìn)行文
    的頭像 發(fā)表于 09-16 16:12 ?2833次閱讀
    Linux操作環(huán)境:diff實(shí)現(xiàn)文本<b class='flag-5'>比對</b>方法

    Python進(jìn)行配置文件的教程免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是Python進(jìn)行配置文件的教程免費(fèi)下載。
    發(fā)表于 09-30 16:41 ?6次下載
    <b class='flag-5'>Python</b><b class='flag-5'>進(jìn)行</b>配置<b class='flag-5'>文件</b>的教程免費(fèi)下載

    常見Python習(xí)題詳解

    Python程序有兩種運(yùn)行方式:交互式和文件式。 交互式利用Python解釋器即時(shí)響應(yīng)用戶輸入的代碼,給出輸出結(jié)果。 文件式將Pytho
    發(fā)表于 07-11 09:43 ?1次下載

    Python】如何將Python腳本打包成exe可執(zhí)行文件

    Python實(shí)用技巧】如何將Python腳本打包成exe可執(zhí)行文件
    的頭像 發(fā)表于 08-18 12:40 ?1.8w次閱讀
    【<b class='flag-5'>Python</b>】如何將<b class='flag-5'>Python</b>腳本打包成exe可執(zhí)<b class='flag-5'>行文件</b>

    5G AAU 功放控制和監(jiān)測模塊

    5G AAU 功放控制和監(jiān)測模塊
    發(fā)表于 10-28 12:00 ?2次下載
    5G AAU 功放控制和監(jiān)測模塊<b class='flag-5'>簡</b><b class='flag-5'>析</b>

    AFE8092幀同步特性

    AFE8092幀同步特性
    的頭像 發(fā)表于 08-24 13:37 ?645次閱讀
    AFE8092幀同步特性<b class='flag-5'>簡</b><b class='flag-5'>析</b>

    如何使用 Llama 3 進(jìn)行文本生成

    torch 使用Hugging Face的pipeline進(jìn)行文本生成。 python復(fù)制代碼 from tr
    的頭像 發(fā)表于 10-27 14:21 ?338次閱讀
    主站蜘蛛池模板: 久久99国产视频| 涩涩免费网站| 夜色帮首页| 公和我做好爽添厨房中文字幕| 久久人妻少妇嫩草AV蜜桃35I| 污文乖不疼的| qvod激情图片| 久久热这里只有 精品| 亚洲精品白色在线发布| 打开双腿狠狠蹂躏蜜桃臀| 免费无码国产欧美久久18| 亚洲精品久久午夜麻豆| 二级片免费看| 欧洲人交xxx69| 5566av资源| 久久精品AV一区二区无码| 香艳69xxxxx有声小说| 别插我B嗯啊视频免费| 男人插曲视频大全免费网站| 曰本少妇高潮久久久久久| 国产午夜高潮熟女精品AV| 色欲人妻无码AV专区| 超碰caoporen国产| 男生插曲女生身全过程| 在线看无码的免费网站| 精品国产一区二区三区久久影院| 午夜免费福利小电影| 国产成人精品免费视频下载| 热久久视久久精品18| cctv论坛| 女人一级毛片免费观看| 67194con免费福和视频| 旧里番ovaの催○セイ活指导| 亚洲精品免费在线| 国内高清在线观看视频| 香蕉鱼视频观看在线视频下载| 国产AV亚洲精品久久久久软件 | 一本道无码字幕在线看| 国产永久免费高清在线观看| 小寡妇水真多好紧| 国产乱妇乱子在线播视频播放网站|