Erreur «non sous-inscriptable» lors de l'appel de la fonction
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