Hab noch zwei Bugs gefunden beim Umbenennen von Dateien. Fix ist untenstehend. Ich getraue mich nicht, einfach ins Git reinzupfuschen. Ausserdem müsste man wohl noch die Translations für die Messages in der Box hinzufügen.
- Bug1: Wenn ein '[' oder ']' im Dateiname ist, muss man diese für glob.glob escapen
- Bug2: Man kann nicht f.Replace machen, da es nicht nur den Anfang ersetzt. Kann in seltenen Fällen zu falschem Namen führen.
Ausserdem hab ich gleich noch im Falle eines Fehlers eine MessageBox anzeigen lassen.
def renameDirectory(self, service, new_name):
try:
dir = os.path.dirname(self.service.getPath()[0:-1])
os.rename(self.service.getPath(), os.path.join(dir, self.input_file.getText() + "/"))
self.original_file = self.input_file.getText()
except Exception, e:
print e
self.session.open(MessageBox, _("Rename failed:\n") + str(e), MessageBox.TYPE_ERROR)
def renameFile(self, service, new_name):
try:
path = os.path.dirname(service.getPath())
file_name = os.path.basename(os.path.splitext(service.getPath())[0])
src = os.path.join(path, file_name)
dst = os.path.join(path, new_name.encode('utf-8'))
import glob
escapedSrc = ""
for index, char in enumerate(src):
if char == '[':
escapedSrc = escapedSrc + "[[]";
elif char == ']':
escapedSrc = escapedSrc + "[]]";
else:
escapedSrc = escapedSrc + char
for f in glob.glob(os.path.join(path, escapedSrc + "*")):
newPathName = dst + f[len(src):]
os.rename(f, newPathName)
except Exception, e:
print e
self.session.open(MessageBox, _("Rename failed:\n") + str(e), MessageBox.TYPE_ERROR)
Alles anzeigen