我在目录'C:/Users/lamda/Desktop/ML working/logs/a/'
中有多个子目录,每个子目录包含一堆文件。我的目标是将所有这些文件连接到一个文件'C:/Users/lamda/Desktop/ML working/logs/concatenate.log'
中
我已经编写了以下python代码,但仅成功复制了'C:/Users/lamda/Desktop/ML working/logs/concatenate.log'
中的一个文件内容。我怀疑是否缺少for循环,但无法真正找出问题所在。请帮助我
import glob
import os.path
directories = os.listdir('C:/Users/lamda/Desktop/ML working/logs/a')
for i in directories:
files = os.listdir('C:/Users/lamda/Desktop/ML working/logs/a/' + i)
print(files[1:])
files2 = files[1:]
for j in files2 :
fs = open('C:/Users/lamda/Desktop/ML working/logs/a/'+i+'/'+j,'r')
fd = open('C:/Users/lamda/Desktop/ML working/logs/concatenate.log','w')
#print(i)
#print(j)
for ligne in fs :
fd.write(ligne)
fd.close()
fs.close()
答案 0 :(得分:2)
这是因为open(path, 'w')
文件被截断了。您要么只需要打开一次目标文件,然后在循环遍历源文件的所有迭代中使用类似文件的对象,否则就必须以追加模式open(path, 'a')
打开文件。
有关详细信息,请参见https://docs.python.org/2/library/functions.html#open。
答案 1 :(得分:0)
类似的事情会起作用。
OF = open("out.txt", 'w+')
for path, dirlist, name in os.walk(path):
fpath = (os.path.join(path, n) for n in name)
try:
for file in fpath:
with open(file, "r") as f:
for line in f:
OF.write(line)
except Exception as e:
print(e)