Portál AbcLinuxu, 30. října 2025 19:33

#!/usr/bin/env python
import os, sys
try:
rename_flag = sys.argv[1] == '--rename'
except IndexError:
rename_flag = False
def suggest_new_name(name):
try:
newname = name.decode('utf-8').encode('iso-8859-2')
#newname = name.decode('iso-8859-2').encode('utf-8')
except UnicodeDecodeError:
return False
except UnicodeEncodeError:
return False
if newname == name:
return False #No renaming necesarry
return newname
def rename_path(oldpath, newpath):
print oldpath, '->', newpath
if rename_flag:
os.rename(oldpath, newpath)
def process_names(root, names):
for name in names:
newname = suggest_new_name(name)
if not newname: continue
fullpath_old = os.path.join(root, name)
fullpath_new = os.path.join(root, newname)
rename_path(fullpath_old, fullpath_new)
for root, dirs, files in os.walk('.', topdown=False):
process_names(root, files)
process_names(root, dirs)
Program projde vše rekurzivně v aktuálním adresáři a přejmenuje názvy z utf-8 do latin2, pokud takovou konverzi lze provést. Bez parametru '--rename' běží nanečisto - pouze vypíše, co by udělal.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.