Je reçois cette erreur:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1538, in __call__
return self.func(*args)
File "C:/Users/Marc/Documents/Programmation/Python/Llamachat/Llamachat/Llamachat.py", line 32, in download
with open(place_to_save, 'wb') as file:
PermissionError: [Errno 13] Permission denied: '/goodbye.txt'
Lorsque vous exécutez ceci:
def download():
# get selected line index
index = films_list.curselection()[0]
# get the line's text
selected_text = films_list.get(index)
directory = filedialog.askdirectory(parent=root,
title="Choose where to save your movie")
place_to_save = directory + '/' + selected_text
print(directory, selected_text, place_to_save)
with open(place_to_save, 'wb') as file:
connect.retrbinary('RETR ' + selected_text, file.write)
tk.messagebox.showwarning('File downloaded',
'Your movie has been successfully downloaded!'
'\nAnd saved where you asked us to save it!!')
Quelqu'un peut-il me dire ce que je fais mal? Merci
Spécifications: Python 3.4.4 x86Windows 10 x64
Modifiez les autorisations du répertoire dans lequel vous souhaitez enregistrer afin que tous les utilisateurs disposent des autorisations de lecture et d'écriture.
Il existe essentiellement trois méthodes principales pour obtenir les privilèges d'administrateur execution
sous Windows.
cmd.exe
python
(non recommandé)cmd.exe
en tant que et adminÉtant donné que dans Windows, il n’existe pas de commande Sudo
, vous devez exécuter le terminal (cmd.exe
) en tant qu’administrateur pour obtenir un niveau de permissions équivalent à Sudo
. Vous pouvez le faire de deux manières:
Manuellement
cmd.exe
dans C:\Windows\system32
Run as Administrator
C:\Windows\system32
Via les raccourcis clavier
alt
et ctrl
généralement) + X
.Command Prompt (Admin)
En faisant cela, vous exécutez en tant qu'administrateur, ce problème ne devrait donc pas persister
python.exe
Properties
"C:\path_to\python.exe" C:\path_to\your_script.py"
Réponse fournie par delphifirst dans cette question
python
(Non recommandé)C'est une possibilité, mais je vous décourage vivement de le faire.
Cela implique simplement de trouver l'exécutable python
et de le configurer pour qu'il s'exécute en tant qu'administrateur à chaque fois. Peut et va probablement causer des problèmes avec des choses telles que la création de fichiers (uniquement des administrateurs) ou éventuellement des modules ne nécessitant PAS d'être un administrateur pour s'exécuter.
Cela m'est arrivé sur une machine Windows utilisant Pycharm.
Le correctif: Cliquez avec le bouton droit sur votre application PyCharm et exécutez-la en tant qu'administrateur.
Le problème ici est que votre utilisateur ne dispose pas de droits/autorisations pour ouvrir le fichier. Cela signifie que vous devez accorder des privilèges administratifs à votre ide python avant d'exécuter cette commande.
En tant qu'utilisateur Windows, il vous suffit de cliquer avec le bouton droit de la souris sur python ide => sélectionner l'option 'Exécuter en tant qu'administrateur', puis exécuter votre commande.
Et si vous utilisez la ligne de commande pour exécuter les codes, procédez de la même façon ouvrez la commande Invite avec droits d’administrateur.
J'ai fait face à un problème similaire. J'utilise Anaconda sur Windows et je l'ai résolu comme suit: 1) recherchez "Anaconda Prompt" dans le menu Démarrer 2) Faites un clic droit et sélectionnez "Exécuter en tant qu'administrateur". étapes d'installation ...
Cela prend en charge les problèmes de permission
Assurez-vous que le fichier que vous essayez d'écrire est fermé en premier.
Vérifiez et assurez-vous que le fichier que vous essayez d'écrire n'est pas ouvert ou qu'un programme en arrière-plan ne conserve pas ce fichier/ces données. C'était le problème pour moi.
Le problème pourrait être dans le chemin du fichier que vous voulez ouvrir. Essayez d’imprimer le chemin et de voir s’il est correct .__J'ai eu un problème similaire
def scrap(soup,filenm):
htm=(soup.prettify().replace("https://","")).replace("http://","")
if ".php" in filenm or ".aspx" in filenm or ".jsp" in filenm:
filenm=filenm.split("?")[0]
filenm=("{}.html").format(filenm)
print("Converted a file into html that was not compatible")
if ".aspx" in htm:
htm=htm.replace(".aspx",".aspx.html")
print("[process]...conversion fron aspx")
if ".jsp" in htm:
htm=htm.replace(".jsp",".jsp.html")
print("[process]..conversion from jsp")
if ".php" in htm:
htm=htm.replace(".php",".php.html")
print("[process]..conversion from php")
output=open("data/"+filenm,"w",encoding="utf-8")
output.write(htm)
output.close()
print("{} bits of data written".format(len(htm)))
mais après avoir ajouté ce code:
nofilenametxt=filenm.split('/')
nofilenametxt=nofilenametxt[len(nofilenametxt)-1]
if (len(nofilenametxt)==0):
filenm=("{}index.html").format(filenm)
Cela a fonctionné parfaitement