問題をPYTHONに新しいですと
expected_files=os.listdir('expected/path')
actual_files = os.listdir('actual/path')
diff_files=os.listdir('diff/path')
cr=['base.txt','final.txt']
i=0
for files in expected_files:
tst=os.path.join('expected/path',files)
with open(tst,'r')as Expected:
for actualfile in actual_files:
actualpath=os.path.join('actual/path',actualfile)
with open(actualpath,'r') as actual:
diff=difflib.unified_diff(Expected.readlines(),
actual.readlines(),
fromfile=Expected,
tofile=actual,)
diffpath=os.path.join('diff/path',cr[i])
diff_file = open(diffpath, 'w')
for line in diff:
diff_file.write(line)
diff_file.close()
i=i+1
このセクションにあり、助けてください:
i=0
diffpath=os.path.join('diff/path',cr[i])
diff_file = open(diffpath, 'w')
for line in diff:
diff_file.write(line)
diff_file.close()
i=i+1
あなたはいつもそれが意志cr[i]
にアクセスする前に0
にi
を設定しているので、常にcr[0]
ループを開始する前に、i=0
を移動します。あなたは値を0
に初期化したいと思います。
私はあなたがこのような何かしたいと思う:
expected_files=os.listdir('expected/path')
actual_files = os.listdir('actual/path')
diff_files=os.listdir('diff/path')
cr=['base.txt','final.txt']
j=1
for files in expected_files:
tst=os.path.join('expected/path',files)
with open(tst,'r')as Expected:
#i=0
for i, actualfile in enumerate(actual_files):
actualpath=os.path.join('actual/path',actualfile)
with open(actualpath,'r') as actual:
diff=difflib.unified_diff(Expected.readlines(),
actual.readlines(),
fromfile=Expected,
tofile=actual,)
diffpath=os.path.join('diff/path',cr[i])
with open(diffpath, 'w') as diff_file:
for line in diff:
diff_file.write(line)
#diff_file.close()
#i=i+1
いくつかの説明を、そうenumerate(actual_files)
はあなたがインクリメントを自分で行う必要はありません。このように、インデックスi
、リストactualfile
からのデータを提供します。 (はがディレクトリ内の2つ以上のファイルでブレークすることにも注意してください!)また、図のように書き込みにはwith open() as foo:
構文を使用できます。
必ずしもあなたの問題ではありませんが、 'fromfile'と' tofile'は文字列で、ファイルオブジェクトを送信するように見えます。 (difflib.unifiedlib) 'unified_diff(a、b、fromfile = ''、tofile = ''、fromfiledate = ''、tofiledate = ''、n = 3、lineterm = '\ n') ' –