Lite trevande start med Python. Försöker göra ett Python skript som ska ersätta oönskade tecken i filnamn mot önskvärda alternativ, i angiven mapp (inkl alla undermappar).
Att byta ut t.ex. mellanslag i filnamn mot underscore är ju rätt lätt:
Problemet jag får med scriptet ovan är att alla filer genomsöks genom
Mitt sätt att tänka blir då att först ersätta mellanslag med underscore:
Men dels känns det här som barn-kod, och dels har jag en jäkla massa oönskade tecken som jag vill söka efter och ersätta mot angivna alternativ. Problemet är alltså att kunna hitta och ersätta flera oönskade tecken i ett och samma filnamn (om det finns). Känns som det borde finnas ett mer effektivt sätt att göra det här på än att upprepa samma kod hundra gånger?
Är även intresserad att göra samma sak för Mappnamn framöver.
Tackar för lite idéer och tips.
Att byta ut t.ex. mellanslag i filnamn mot underscore är ju rätt lätt:
Kod:
.. men nu kan det ju finnas flera oönskade tecken i samma filnamn. import os, fnmatch file_path = 'C:\\Python-scripts\\testmapp\\' files_to_rename = fnmatch.filter(os.listdir(file_path), '*.*') for file_name in files_to_rename: os.rename(file_path + file_name, file_path + file_name.replace(' ', '_'))
Problemet jag får med scriptet ovan är att alla filer genomsöks genom
Kod:
.. och om man då lägger till fler tecken som ska bytas ut, typ: files_to_rename = fnmatch.filter(os.listdir(file_path), '*.*')
Kod:
.. så hittar inte skriptet dom filer som hade mellanslag och redan ändrats med underscore istället för mellanslag, eftersom skriptet uppenbarligen söker efter dom filnamn som filerna först hette (förmodligen lagrar en lista nånstans då).file_path + file_name.replace('+', 'plus'))
Mitt sätt att tänka blir då att först ersätta mellanslag med underscore:
Kod:
.. och sen läsa igenom hela mappstrukturen igen, och därefter köra loopen igen med en ny ersättning:files_to_rename = fnmatch.filter(os.listdir(file_path), '*.*') for file_name in files_to_rename: os.rename(file_path + file_name, file_path + file_name.replace(' ', '_'))
Kod:
osv osv. files_to_rename = fnmatch.filter(os.listdir(file_path), '*.*') for file_name in files_to_rename: os.rename(file_path + file_name, file_path + file_name.replace('+', 'plus'))
Men dels känns det här som barn-kod, och dels har jag en jäkla massa oönskade tecken som jag vill söka efter och ersätta mot angivna alternativ. Problemet är alltså att kunna hitta och ersätta flera oönskade tecken i ett och samma filnamn (om det finns). Känns som det borde finnas ett mer effektivt sätt att göra det här på än att upprepa samma kod hundra gånger?
Är även intresserad att göra samma sak för Mappnamn framöver.
Tackar för lite idéer och tips.
__________________
Senast redigerad av Marinerad65 2023-12-15 kl. 01:49.
Senast redigerad av Marinerad65 2023-12-15 kl. 01:49.