2016-04-01 16 views
0
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() 

Hallo dort, was ich tun möchte, ist eine beliebige Anzahl von Dateien verketten, die der Benutzer angibt. Der Benutzer wird aufgefordert, die Anzahl der Dateien aus den nFiles var anzugeben.Erstellen eines Zählers basierend auf Benutzereingabe

Die Grenzen dieses Codes ist, dass, wenn der Benutzer gibt an, dass sie vier Dateien verketten möchten, sind sie nicht in der Lage, dies zu tun.

Wie würde ich implementieren dynamisch die shutil.copyfileobj(open(catFile3, 'rb'), d11) auf den Benutzer unput in nFiles speziell basiert?

+0

Ist das überhaupt möglich? –

Antwort

0

Verwenden Loops und vielleicht Listen. Der einfachste Weg, um Ihren Code zu transformieren mit einer beliebigen Anzahl von Dateien zu arbeiten, zunächst nFiles mal in einer Schleife, jedes Mal für einen anderen Dateinamen zu fragen und sie in einer Liste setzen. Führen Sie dann eine Schleife über die Liste der Dateinamen aus und führen Sie den Kopiervorgang für jeden einzelnen aus.

Aber könnten Sie auch kompakte Dinge noch mehr und machen die verketten Schritt unmittelbar nach dem Namen Datei erzählt wird, ohne sie in einer Liste zu halten brauchen:

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) 

Ich habe einige Variablennamen geändert up um dem üblichen Python-Stil zu folgen (lowercase_with_underscores für die meisten Variablen). Sie können natürlich Ihren eigenen Stil verwenden, wenn Sie bevorzugen (seien Sie einfach konsequent!). Ich habe auch with Aussagen zu handhaben Schließen die Dateien automatisch für uns, das ist besser, als unter Berufung auf sie geschlossen wird, wenn sie haben keine weiteren Artikel verwendet.

Verwandte Themen