根据用户输入创建计数器

时间:2016-04-01 22:32:54

标签: python-2.7

require 'uri'

%w[
  http://www.speedtest.net/
  http://webcache.googleusercontent.com/search%3Fhl%3Den%26biw%26bih%26q%3Dcache:M47_v0xF3m8J
].reject{ |url| URI.parse(url).host[/googleusercontent\.com$/] }
# => ["http://www.speedtest.net/"]

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

此代码的限制是,如果用户指定他们想要连接四个文件,则他们无法这样做。

如何基于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()

1 个答案:

答案 0 :(得分:0)

使用循环和列表。将代码转换为使用任意数量文件的最简单方法是首先循环nFiles次,每次都要求另一个文件名并将其放入列表中。然后循环遍历文件名列表,对每个文件名进行复制操作。

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

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)

我已经改变了一些变量名,以遵循常见的Python样式(对于大多数变量,lowercase_with_underscores)。如果您愿意,您当然可以使用自己的风格(只是保持一致!)。我还使用with语句来自动为我们关闭文件,这比依赖它们在没有更多引用的时候关闭更好。