第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 python 中比較文件、檢查文件名、文件大小和校驗和 md5 的路徑

在 python 中比較文件、檢查文件名、文件大小和校驗和 md5 的路徑

函數(shù)式編程 2022-05-24 10:41:00
我想比較具有路徑、文件名、文件大小和 md5 校驗和的目錄中的文件。當我獨立檢查它們時,我得到了三個對文件名、文件大小和 md5 校驗和工作正常的函數(shù)。我認為問題在于我如何設置另一個函數(shù)來處理包含 csv 文件項的字典。這是要比較的 csv 文件。|Path|Filename|File Size|Hash|/var/tmp/test|test1.txt|257|2e6041635f72233f4cdf6fbfb0a8288e|/var/tmp/test|text2.txt|68|d3428d5910f54270d62ff57ccd5ff52c|/var/tmp/test|text3.txt|58|42e8b3cba5320e07745110b8b193f534|/var/tmp/test|text4.xml|128|4acc96e6e8b9006722408e15e555d2c2|/var/tmp/test|text5.csv|214|a7071c13195d8485b2fb4a68503cbd7a我試圖修改 md5、文件名、文件大小以及它如何在目錄中循環(huán),但似乎有問題。def csv_checksum(files, path):    # Get column with delimiter    csv.register_dialect('myDialect', delimiter = '|')    csvDics = {}    # Open file, read them, and output csv formatted    with open(files, 'r') as f:        reader = csv.reader(f, dialect='myDialect')        for row in reader:            if reader.line_num == 1:                continue            csvDic = {                    'Directory': row[1],                    'Filename': row[2],                    'File Size': row[3],                    'Hash': row[4]            }            csvDics.update(csvDic)             print(csvDics)            comp_original(csvDics, path)def comp_original(dic, path):    for (dirpath, dirnames, filenames) in os.walk(path):        for files in filenames:            if (dic.get('Directory') == path                    and dic.get('Filename') == get_filename(files)                    and dic.get('File Size') == get_filesize(files)                    and dic.get('Hash') == get_md5(files)):                print("All files matches")                return Truedef get_filename(fname):    filename = os.path.basename(fname)    return filenamedef get_filesize(fname):    stat_info = os.stat(fname)    file_size = stat_info.st_size    return file_size對于文件名,它通過循環(huán),但打印出 3 個不匹配的No matches和一個All files matches都應該匹配的。然后對于文件大小和get_md5,我得到OSError: [Errno 2] No such file or directory: 'text3.txt'
查看完整描述

1 回答

?
RISEBY

TA貢獻1856條經(jīng)驗 獲得超5個贊

而不是這個:


for (dirpath, dirnames, filenames) in os.walk(path):

    for files in filenames:

        if (dic.get('Directory') == path

                and dic.get('Filename') == get_filename(files)

                and dic.get('File Size') == get_filesize(files)

                and dic.get('Hash') == get_md5(files)):

你應該使用過:


for root, dirs, files in os.walk(path):

    for f in files:

        file_name = os.path.join( root, f )   # <<--- this is important

        if (dic.get('Directory') == path      # `root` here, not `path` ??

                and dic.get('Filename') == get_filename(file_name)

                and dic.get('File Size') == get_filesize(file_name)

                and dic.get('Hash') == get_md5(file_name)):


查看完整回答
反對 回復 2022-05-24
  • 1 回答
  • 0 關注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號