Ciao a tutti, sognatori e maghi del codice! Sono disperata! Sto cercando di creare un piccolo script in Python per automatizzare la creazione di cartelle basate su date, ma qualcosa non va e non riesco a capirci niente. Ho cercato ovunque, provato mille soluzioni, ma niente. Il codice dovrebbe leggere un file di testo con le date, estrarle e creare le cartelle corrispondenti.
Ecco il codice incriminato:
```python
import os
import re
with open("date.txt", "r") as f:
for line in f:
match = re.search(r'\d{2}-\d{2}-\d{4}', line)
if match:
date = match.group(0)
os.makedirs(date, exist_ok=True)
print(f"Cartella {date} creata!")
else:
print("Nessuna data trovata in questa riga.")
```
L'errore che mi restituisce è un `FileNotFoundError: [WinError 2] Impossibile trovare il file specificato` ma il file `date.txt` esiste eccome! Qualcuno ha qualche idea di cosa possa essere sbagliato? Magari c'è qualcosa di ovvio che mi sfugge completamente... Grazie in anticipo per qualsiasi aiuto!
Spero in qualche consiglio illuminante!
@edencaruso48 Capita anche ai migliori! Quell'errore di solito significa che Python cerca `date.txt` nella directory sbagliata. Due cose da controllare subito:
1. **Percorso del file**: Sei nello stesso ambiente in cui gira lo script? Apri un terminale, naviga nella cartella DOVE SI TROVA `date.txt` e lancia lo script da lì. Oppure modifica lo script con il percorso assoluto:
```python
with open(r"C:\percorso\completo\date.txt", "r") as f:
```
2. **Estensione nascosta**: Windows a volte aggiunge `.txt` in automatico, quindi il file potrebbe chiamarsi `date.txt.txt`. Disattiva "Nascondi estensioni" in Esplora File per verificare.
Se il problema persiste, aggiungi prima dell'apertura:
```python
print(os.getcwd()) # Mostra la directory corrente
print(os.listdir()) # Lista file nella cartella
```
E vedi se `date.txt` appare. Se vuoi, condividi l'output qui!
*PS: Il regex è giusto per date stile GG-MM-AAAA, ma se hai anno/mese/giorno invertiti, le cartelle si creano comunque. L'errore è proprio sul file mancante.*
@sterlingnegri21 ha già dato ottimi consigli, ma aggiungerei un'altra possibilità. Quel `FileNotFoundError` potrebbe anche essere legato al fatto che stai cercando di creare una cartella con un nome che contiene caratteri non validi per Windows (tipo i trattini nelle date).
Provare a sostituire i trattini con qualcos'altro, tipo punti o underscore, potrebbe risolvere il problema. Ad esempio, modifica la riga di creazione della cartella in:
```python
os.makedirs(date.replace('-', '_'), exist_ok=True)
```
e stampa anche il nome della cartella effettivamente creata per verificare.
Se non funziona, come suggerito, controlla il percorso e la directory corrente con `os.getcwd()` e `os.listdir()`.
Sarebbe utile sapere il contenuto esatto del file `date.txt`, magari c'è qualche riga vuota o formato inaspettato.
Ehi @edencaruso48, capisco la frustrazione! Anch'io ieri ho cercato il telefono per venti minuti... mentre lo tenevo in mano. 🙈
Oltre ai validi consigli di @sterlingnegri21 e @gigliolarizzo38, controllo sempre queste due cose da somaro:
1. **Lo script sta EDITANDO il file aperto?** Se hai `date.txt` aperto in un altro programma (tipo Notepad++), Windows blocca l'accesso. Chiudi tutto e riprova!
2. **Hai messo uno spazio nel nome?** Se il file si chiama "date .txt" con uno spazio invisibile, Python impazzisce. Fai così per sicurezza:
```python
with open("date.txt".strip(), "r") as f:
```
Un'altra idea: prova ad aggiungere un `os.chdir(os.path.dirname(__file__))` all'inizio dello script, così lavora SEMPRE nella cartella dove hai lo script. A me ha salvato la vita mille volte!
Se ancora non va, fai come dice @gigliolarizzo38: incolla qui l'output di:
```python
print("Percorso:", os.path.abspath("date.txt"))
```
Così vediamo se Python lo vede davvero... e non è che magari hai chiamato il file "Date.txt" con la maiuscola? Windows è strano con le lettere!
Tienici aggiornati, siamo tutti qui a tirarti il fiato! 💪