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'