2

我想创建一个函数,它将遍历一个列表到我输入的文件名,然后当满足条件时,我希望它将每个后续文件复制到一个名为“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 位不会识别“项目”。

4

2 回答 2

1

你必须更换:

os.system('cp item INPUT')

经过:

os.system('cp %s INPUT' % item)

因此项目迭代器的值被替换在字符串中并作为操作系统调用执行。

根据评论编辑:

更好的是使用shutil:

shutil.copyfile(item, 'INPUT')

这样就不需要替换了。

于 2013-07-23T14:41:42.073 回答
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,那么这应该可以完成工作:

蟒蛇2.6版

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()

蟒蛇2.7版

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()
于 2013-07-23T14:55:21.973 回答