Question

J'ai la fonction ci-dessous qui copie un fichier dans un répertoire et la recréer dans le répertoire où la fonction est appelée. Lorsque j'exécute le code partie par partie dans IPython, cela fonctionne bien. Cependant, lorsque je l'exécute en fonction, cela me donne l'erreur suivante:

---> 17     shutil.copy2(filein[0], os.path.join(dir,'template.in'))

TypeError: 'type' object is not subscriptable

Voici la fonction

import os
import shutil
from find import find

def recreatefiles(filedir):
    currdir = os.getcwd() # get current directory
    dirname = 'maindir'
    dir = os.path.join(currdir,dirname)
    if not os.path.exists(dir):
        os.makedirs(dir)

    #Copy .in files and create a template
    filein = find('*.in',filedir) # find is a function created

    shutil.copy2(filein[0], os.path.join(dir,'template.in'))

Des idées sur l'erreur? Merci

Edit: voici le code pour trouver

import os, fnmatch
def find(pattern, path):
    result = []
    for root, dirs, files in os.walk(path):
        for name in files:
            if fnmatch.fnmatch(name, pattern):
                if not name.startswith('.'):
                    result.append(os.path.join(root, name))
    return result

Edit2: sortie de fichier de ipython

  [1]: filein
  [2]: ['/home/Projects/test.in']

Fondamentalement, il n'y a qu'un seul fichier. J'ai utilisé Filein [0] dans shuttil.copy2 pour retirer les crochets

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top