我正在嘗試處理 txt 檔案。
我有一個名為 2D 的串列,reps = [], len(reps) = 41,我還有一個名為 的目錄replies,其中包含34 txt files.
我想這樣做:
reps[0][0]是file1.txt回復目錄下的第一行,reps[0][1]是第二行等等。reps[1][0]是第二個的第一行file2.txt- 直到所有
34 txt檔案都被替換,然后它就完成了
我怎樣才能做到這一點?
我將不勝感激
uj5u.com熱心網友回復:
reps = ...
for i, lst in enumerate(reps, start=1):
with open(f"replies/file{i}.txt", "w") as f:
f.writelines(line '\n' for line in lst)
雖然如果你確實有 41 個字串串列reps,這將導致 41 個檔案,而不是 34 個:
replies/file1.txt
replies/file2.txt
...
replies/file41.txt
如果我誤解了你,而你真的只想替換該目錄中已經存在的 34 個檔案,你總是可以在回圈的開頭添加一個條件中斷:
...
for i, lst in enumerate(reps, start=1):
if i > 34:
break
...
請注意,writelines期望提供的迭代中的每個元素都提供自己的行分隔符,這就是生成器line '\n'為每一行生成的原因。
uj5u.com熱心網友回復:
你可能看起來像這樣:
from pathlib import Path
for lines, file_path in zip(reps, Path("/path/to/replies/dir").iterdir()):
with open(file_path, "w") as f:
f.writelines([l "\n" for l in lines])
Path("/path/to/replies/dir").iterdir()將讓您遍歷回復目錄中的所有檔案。zip()將讓您迭代代表和檔案,并在任何可迭代的第一個用完后自動停止迭代。writelines()會將行變數中的所有行轉儲到檔案中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/505072.html
