我想创建一个函数,它会遍历列表到我放入的文件名,然后当条件满足时,我希望它将每个后续文件复制到名为'INPUT'的文件。
这是我到目前为止所做的:
file_list = [file1, file2, file3]
def queue():
if condition1_met:
for item in file_list:
os.system('cp item INPUT')
else:
return queue()
但是我只是不知道迭代然后复制文件的最佳方法是什么,因为os.system位不会识别'item'。
答案 0 :(得分:1)
你必须替换:
os.system('cp item INPUT')
由:
os.system('cp %s INPUT' % item)
因此,项迭代器的值在字符串中被替换并作为OS调用执行。
根据评论编辑:
最好是使用shutil:
shutil.copyfile(item, 'INPUT')
这样就不需要替代。
答案 1 :(得分:0)
此代码会将每个文件复制到INPUT,每次都覆盖INPUT:
import shutil
file_list = [file1, file2, file3]
def queue():
if condition1_met:
for item in file_list:
shutil.copyfile(item, "INPUT")
else:
return queue()
如果你想将文件的内容附加到INPUT,那么这应该可以完成这项工作:
import contextlib
file_list = [file1, file2, file3]
def queue():
if condition1_met:
for item in file_list:
with contextlib.nested(open(item,"r"), open("INPUT","a+")) as (src,dst):
dst.writelines(src.readlines())
else:
return queue()
file_list = [file1, file2, file3]
def queue():
if condition1_met:
for item in file_list:
with open(item,"r"), open("INPUT","a+") as src,dst:
dst.writelines(src.readlines())
else:
return queue()