1
にリストに項目を追加します。は、私が意図したとおりに動作するプログラムを持っている辞書
import os
import hashlib
from pprint import pprint
def md5(fname):
hash_md5 = hashlib.md5()
with open(fname, "rb") as f:
for chunk in iter(lambda: f.read(4096), b""):
hash_md5.update(chunk)
return hash_md5.hexdigest()
lst = []
for dirpath, dirnames, filenames in os.walk('d:\\python\\exercism.io'):
d = {dirpath: filenames}
for filename in filenames:
d[filename] = [os.stat(dirpath).st_mtime, md5(dirpath + '\\' + filename)]
# d[filename] = [os.stat(dirpath).st_mtime]
# d[filename] = [md5(dirpath + '\\' + filename)]
lst.append(d)
pprint(lst)
私の質問はこれです:私は、この行を取り除く場合
:
d[filename] = [os.stat(dirpath).st_mtime, md5(dirpath + '\\' + filename)]
と2つのコメントアウトされた行を使用しようとすると(修正 - 下記参照)、失敗します。
1)コメントアウトされた行は単独で動作します。値がリストであるkey:valueのペアが得られます。
次に、2番目にコメントアウトされた行の値をリストに追加します。
d[filename][1] = md5(dirpath + '\\' + filename)
を私は範囲エラー外のインデックスを取得:
私はこれをしようとしていました。リスト の最初の要素は項目[0]で、2番目の項目は[1]でなければなりません。
部分出力:
[{'ceasar_cipher.py': [1512494094.5630972, '844e069c90ebdb3e1e5f5dd56da2ac2e'],
'd:\\python\\exercism.io': ['ceasar_cipher.py',
'difference_of_squares.py',
'gigasecond.py',
'grains_in_python.py',
'hamming-compare.py',
'isogram.py',
'leap_year.py',
'rna_transcription.py',
'run_length_encoding.py'],
注キー: 'ceasar_cipher.pyは' 2つの要素リストである値を持っています。
2つのコメントアウトされた行と同じ出力を構築したいのですが、私が今使っている1行に対して、 を使っています。私の心配は単に私が間違っていることです。
にアクセスしたり、アクセスしたりしなかった場合... – MarkS