2016-02-07 2 views
0

J'ai donc créé la fonction suivante qui prend une image à l'utilisateur choisit à partir du navigateur de fichiers tkinter, l'ouvre, il re-sauve comme .gif (qui est nécessaire) dans un temporaire répertoire et définit alors comme l'arrière-plan de la toile de tkinter:répertoire temporaire du module Python tempfile Questions

def background(): 
    # Create temporary directory and return path as 'tmp' 
    tmp = tempfile.mkdtemp() 
    # Ask user for image file 
    cng = filedialog.askopenfilename() 
    # Open the image using the PIL's `open` function 
    img = Image.open(cng) 
    # Supposed to save image to the `tmp` directory as a GIF 
    img.save(tmp + cng + '.gif', 'GIF') 
    # Supposed to set image file from temporary directory as background picture 
    bgpic(tmp + cng + '.gif') 

Cependant, chaque fois que le code ci-dessus est exécuté, je reçois l'erreur suivante:

FileNotFoundError: [Errno 2] No such file or directory: 'var/folders/g_/099nlyhn51gf_sy21gvcp2fc0000gn/T/tmpj2z501ml/Users/Name/Pictures/ImageName.jpg.gif' 

Apparemment, le répertoire ne peut pas être trouvé même si je l'ai créé avec temple.mkdtemp(). Qu'est-ce que je fais de mal ici qui cause cette erreur? Toute aide est grandement appréciée! :)

Répondre

0

Vous semblez essayer d'ajouter le chemin complet vers le fichier sur le répertoire temprary (donc au lieu de /path/to/tmpdir/ImageName.jpg.gif, vous utilisez /path/to/tmpdir/Users/Name/Pictures/ImageName.jpg.gif.

vous ne spécifiez pas sur quelle ligne l'erreur est qui se passe, mais je soupçonne que vous obtenez une erreur en essayant de sauver le fichier, car ces répertoires intermédiaires n'existent pas

pensez juste prendre le nom de base du fichier:.

img.save(os.path.join(tmp, os.path.nasename(cng) + '.gif'), 'GIF')