"Null reference exception"? no, grazie, prendo un "unexpected T_VARIABLE"... Questo è il forum per imparare l'arte della programmazione o per chiedere un parere su una sessione di debug particolarmente ostica.
Regole del forum Ricorda di indicare chiaramente nell'oggetto il linguaggio ([C#] oppure [PHP], [Java], [HTML], ...), se la discussione ne riguarda uno in particolare!
salve a rutti,
Ho un problema con il codice in python per notepad++.
Devo far ricercare e sostituire delle stringhe i una directory e nelle sue sottodirectory in modo ricorsivo.
Ho pensato all'uso di os.walk()
Il problema e che non sostituisce niente.
Qualche anima pia che mi può aiutare?grazie
import os;
import sys;
for root, dirs, files in os.walk('C:\Users\xxx\Desktop\cartella'):
for file in files:
editor.replace("old","news")
notepad.save()
notepad.close()
Ciao Trip!
Leggendo la documentazione, probabilmente devi aprire il file con notepad.open(file) prima di poterlo editare; prova a modificare il tuo script così:
import os;
import sys;
for root, dirs, files in os.walk('C:\Users\xxx\Desktop\cartella'):
for file in files:
notepad.open(file)
editor.replace("old","news")
notepad.save()
notepad.close()
"Let me tell you a secret: when you hear that the machine is “smart”, what it actually means is that it’s exploitable." Mikko Hypponen
ciao cub3,
ho provato con la sintassi da te indicata.
Mi appare un pop-out che mi chiede di creare un nuovo file con lo stesso nome del file presente in "cartella" ( che nello script non viene menzionato,) in c:\propgramfile\notepad++.
OK, questo problema è dato dal fatto che lo script è eseguito dalla cartella c:\propgramfile\notepad++ ma il file si trova in C:\Users\xxx\Desktop\cartella; poiché il ciclo for file in files restituisce solo il nome del file e non il percorso completo, ecco che ti viene chiesto di creare un nuovo file con il nome di quello trovato nella cartella di ricerca.
Dovresti riuscire a risolvere utilizzando un altra funzione del modulo os, os.path.abspath(), modificando così lo scritp:
import os;
import sys;
for root, dirs, files in os.walk('C:\Users\xxx\Desktop\cartella'):
for file in files:
notepad.open(os.path.abspath(file))
editor.replace("old","news")
notepad.save()
notepad.close()
"Let me tell you a secret: when you hear that the machine is “smart”, what it actually means is that it’s exploitable." Mikko Hypponen
ciao cub3,
non preoccuparti nessun problema...
Sei il mio mentore ... tu mi dici cosa devo fare e io lo faccio...
ops mi sembra di averla già sentita questa battuta!
torniamo a noi... lo script è praticamente quello che ho postato per primo, se non per il fatto che è "farcito" di una serie di "editor.replace() per sostituire più vocaboli in modo ricorsivo in più file del tipo tmx.
Con l'ultima modifica del listato qualcosa si è mosso: avviene la sostituzione richiesta, però ,( purtroppo c'è ancora un però ! ) mi appare una finestra di richiesta , simile a quella precedente, che mi avverte che i file b1.txt e b2.txt presenti nella sua sottocartella b non sono presenti e mi chiede di poterli creare nella cartella "cartella" ( quella del percorso indicato nello sketch).
Tieni presente che nella directory cartella ho questa situazione:
Vediamo se riusciamo ad arrivare in fondo... Possiamo utilizzare la variabile root del primo ciclo for per specificare il percorso completo al file; quindi il codice diventa:
import os;
import sys;
for root, dirs, files in os.walk('C:\Users\xxx\Desktop\cartella'):
for file in files:
notepad.open(root+'\\'+file)
editor.replace("old","news")
notepad.save()
notepad.close()
"Let me tell you a secret: when you hear that the machine is “smart”, what it actually means is that it’s exploitable." Mikko Hypponen
Inserendo un messaggio, dichiari di aver letto e accettato il regolamento di partecipazione.
Nello specifico, sei consapevole che ti stai assumendo personalmente la totale responsabilità delle tue affermazioni, anche in sede civile e/o penale,
manlevando i gestori di questo sito da ogni coinvolgimento e/o pretesa di rivalsa.
Dichiari inoltre di essere consapevole che il messaggio sarà visibile pubblicamente, accetti di diffonderlo con licenza
CC BY-NC-SA 3.0 (con attribuzione a "TurboLab.it") e rinunci ad ogni forma di compensazione (economica o altro).
Rinunci inoltre esplicitamente a qualsiasi pretesa di cancellazione del messaggio.