Python 2.7 基于用户输入创建计数器

Python 2.7 基于用户输入创建计数器,python-2.7,Python 2.7,您好,我想做的是将用户指定的任意数量的文件连接在一起。将要求用户指定nFiles变量中的文件数 此代码的局限性在于,如果用户指定要连接四个文件,则无法连接 我如何动态地实现shutil.copyfileobj(open(catFile3,'rb'),d11)特别是基于用户在nFiles中的unput?使用循环和列表。转换代码以处理任意数量的文件的最简单方法是首先循环nFiles次,每次请求另一个文件名并将其放入列表中。然后在文件名列表上循环,对每个文件名执行复制操作 但是,您还可以进一步压缩内容

您好,我想做的是将用户指定的任意数量的文件连接在一起。将要求用户指定nFiles变量中的文件数

此代码的局限性在于,如果用户指定要连接四个文件,则无法连接


我如何动态地实现shutil.copyfileobj(open(catFile3,'rb'),d11)特别是基于用户在nFiles中的unput?

使用循环和列表。转换代码以处理任意数量的文件的最简单方法是首先循环
nFiles
次,每次请求另一个文件名并将其放入列表中。然后在文件名列表上循环,对每个文件名执行复制操作

但是,您还可以进一步压缩内容,并在被告知文件名后立即执行连接步骤,而无需将其保留在列表中:

from CaseManager import d2
import shutil

d11 = d2 + '/ReconstructedObjects/'
if not os.path.isdir(d2):
    try:
        os.mkdir(d2)
    except OSError as esc:
        if exc.errno != errno.EEXIST:
            raise

nFiles = ('How many objects would you like to concatenate?')
catFile1 = raw_input('Specify the first Object ID')
catFile2 = raw_input('Specify the second Object ID')
catFile3 = raw_input('Specify the third Object ID')

d11 = open(CatFile, 'wb')
shutil.copyfileobj(open(catFile1, 'rb'), d11)
shutil.copyfileobj(open(catFile2, 'rb'), d11)
shutil.copyfileobj(open(catFile3, 'rb'), d11)
d11.close()

我已经修改了一些变量名,以遵循常见的Python风格(对于大多数变量,小写字母加下划线)。如果你愿意,你当然可以使用你自己的风格(只是保持一致!)。我还使用了
语句来为我们处理自动关闭文件的问题,这比依赖它们在没有更多引用时关闭要好。

这可能吗?
n_files = int(raw_input('How many objects would you like to concatenate?')
with open(d11, 'wb') as destination_file:
    for i in range(n_files):
        fn = raw_input('Specify the ID of Object #{}'.format(i+1))
        with open(fn, 'rb') as cat_file:
            shutil.copyfileobj(cat_file, destination_file)