【发布时间】:2018-12-30 09:01:20
【问题描述】:
我有一个包含文件名的列表。
我想将所有文件的内容附加到第一个文件中,然后将该文件(附加的第一个文件)复制到新路径。
这是我到目前为止所做的: 这是附加代码的一部分(我在我的问题末尾放了一个可重现的程序,请看一下:)。
if (len(appended) == 1):
shutil.copy(os.path.join(path, appended[0]), out_path_tempappendedfiles)
else:
with open(appended[0],'a+') as myappendedfile:
for file in appended:
myappendedfile.write(file)
shutil.copy(os.path.join(path, myappendedfile.name), out_path_tempappendedfiles)
这个将成功运行并成功复制,但它不会附加文件,它只是保留第一个文件的内容。
我也试过这个link 它没有引发错误但没有附加文件。所以除了使用write之外,我使用了相同的代码shutil.copyobject
with open(file,'rb') as fd:
shutil.copyfileobj(fd, myappendedfile)
同样的事情发生了。
更新1 这是整个代码:
即使有更新,它仍然不会追加:
import os
import pandas as pd
d = {'Clinic Number':[1,1,1,2,2,3],'date':['2015-05-05','2015-05-05','2015-05-05','2015-05-05','2016-05-05','2017-05-05'],'file':['1a.txt','1b.txt','1c.txt','2.txt','4.txt','5.txt']}
df = pd.DataFrame(data=d)
df.sort_values(['Clinic Number', 'date'], inplace=True)
df['row_number'] = (df.date.ne(df.date.shift()) | df['Clinic Number'].ne(df['Clinic Number'].shift())).cumsum()
import shutil
path= 'C:/Users/sari/Documents/fldr'
out_path_tempappendedfiles='C:/Users/sari/Documents/fldr/temp'
for rownumber in df['row_number'].unique():
appended = df[df['row_number']==rownumber]['file'].tolist()
if (len(appended) == 1):
shutil.copy(os.path.join(path, appended[0]), out_path_tempappendedfiles)
else:
with open(appended[0],'a') as myappendedfile:
for file in appended:
fd=open(file,'r')
myappendedfile.write('\n'+fd.read())
fd.close()
Shutil.copy(os.path.join(path, myappendedfile.name), out_path_tempappendedfiles)
请告诉我问题出在哪里?
【问题讨论】:
标签: python list pandas file file-copying