[Errno 13] Permission denied: 'c: Errore copia file in c:/

di il
7 risposte

[Errno 13] Permission denied: 'c: Errore copia file in c:/

Salve a tutti.
Sto scrivendo un programma che riceve in input un testo da cercare, una directory di partenza e una directory di output dove copia i file trovati (rispetto all'input dato).

Funziona bene in generale, però quando inserisco da console la directory destinazione pari a c:/ mi dà errore: qualche idea?

Per il resto funziona, ma inserendo c:/ lancia l'eccezione che copio al fondo del codice

GRAZIE

import fnmatch
import os
import shutil
from pathlib import Path

parola_da_cercare = input("Inserisci la parola da cercare")
directory_di_partenza = input("Inserisci la directory di partenza per la ricerca")
directory_di_output = input("Inserisci la directory di output")
# se si inserisce solo una parola e non un percorso completo, crea una directory nella cartella di esecuzione del programma

matches = []

# Controllo esistenza di directory di partenza. Se non esiste, il programma termina
if not os.path.exists(directory_di_partenza):
    print("Directory di partenza inesistente. Si prega di inserire un percorso valido.")
    exit()

# Controllo esistenza di directory di destinazione. Se non esiste, chiedo all'utente se vuole crearne una
if not os.path.exists(directory_di_output):
    crea_directory = input("Directory di destinazione inesistente. Vuoi crearne una (y/n)?")
    if crea_directory == "y":
        Path(directory_di_output).mkdir(exist_ok=True)
    else:
        exit()

#Controllo perfetti di scrittura sulla directory di output
if not os.access(directory_di_output, os.W_OK):
    print("Non hai i permessi di scrittura nella directory di output. Scegli una directory valida.")
    exit()

for root, dirnames, filenames in os.walk(directory_di_partenza):
    for filename in filenames:
        if parola_da_cercare in filename:
            matches.append(os.path.join(root, filename))
            if matches:
                print("File trovati:")
                for file_path in matches:
                    print(file_path)
                    #name, ext = os.path.splitext(file_path)
                    #print(name)
                    #print(ext)
                    #try:
                    shutil.copy2(file_path, directory_di_output)
                    #except shutil.SameFileError as e:
                     #   sovrascrivi = input("Il file esiste già nella directory di destinazione")
                    #except shutil.Error as e:
                     #   print(f"shutil.Error durante la copia del file {file_path}: {e}")
                    #except Exception as e:
                     #   print(f"Exception durante la copia del file {file_path}: {e}")
            else:
                print(f"Nessun file trovato con '{parola_da_cercare}'.")

Traceback (most recent call last):
 File "C:\Users\Lucy\PycharmProjects\pythonProject\Etivity1.py", line 43, in <module>
   shutil.copy2(file_path, directory_di_output)
 File "C:\Users\Lucy\AppData\Local\Programs\Python\Python311\Lib\shutil.py", line 436, in copy2
   copyfile(src, dst, follow_symlinks=follow_symlinks)
 File "C:\Users\Lucy\AppData\Local\Programs\Python\Python311\Lib\shutil.py", line 258, in copyfile
   with open(dst, 'wb') as fdst:
        ^^^^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied: 'c:/prova.odt'

7 Risposte

Devi accedere o registrarti per scrivere nel forum
7 risposte