Synology-Forum.nl
Firmware => Synology DSM 5.1 en eerder => Topic gestart door: zakhooi op 22 januari 2015, 13:07:04
-
Hoi,
In navolging van mijn vorige vraag (http://www.synology-forum.nl/synology-dsm-5-1/rename-script-(maar-dan-anders-dan-al-gedaan-is)/msg144819/#msg144819) heb ik een andere vraag die er op lijkt.
Een pythonscript filenames in de current directory om draait en ze dus alszodanig renamed m.u.v. de file extentie.
Dus bijvoorbeeld.
abcdefghi.avi naar ihgfedcba,avi
Is er iemand die dit eenvoudig met python weet op te lossen of wordt het een ingewikkelde vraag?
-
import os
CurrentDir = os.getcwd()
for File in os.listdir(CurrentDir):
Path, OriginalFileName = os.path.split(File)
NamePart, Ext = os.path.splitext(OriginalFileName)
NewFileSpecs = Path +'/'+ NamePart[::-1] + Ext
os.rename(File, NewFileSpecs)
-
Hmmm, dat lijkt niet te werken.
Hoewel de persmissies goed staan (777) kunnen de files niet gerenamed worden:
Traceback (most recent call last):
File "./rename.py", line 8, in <module>
os.rename(File, NewFileSpecs)
OSError: [Errno 13] Permission denied
-
Sta je wel in de juiste directory?
vervang die os.rename regel eens door:
print FileName , " --> ", NewFileSpecs
Kun je zien wat hij probeert te doen.
-
De variabele 'FileName' is leeg.
Traceback (most recent call last):
File "./rename.py", line 9, in <module>
print FileName , " --> ", NewFileSpecs
NameError: name 'FileName' is not defined
-
Sorry moet natuurlijk File zijn
-
Raar, met een print werkt het wel
file_level_0 --> /0_level_elif
level_0_dir_1 --> /1_rid_0_level
level_0_dir_2 --> /2_rid_0_level
renall.py --> /llaner.py
rename.py --> /emaner.py
Maar met os.rename krijg ik de eerder genoemde error (permission denied)
Alle rechten staan goed op alle files (777)
-
Denk niet dat je die bestanden wilt renamen.
Die rename.py wordt natuurlijk gelocked door python.
Ik zou eerst eens in de directorygaan staan waar de bestanden staan die je wilt renamen.
-
het werk nog steeds niet, misschien roep ik het verkeerd aan.
Wat ik doe:
Ik CD naar de directory waar de files staan die ik wil renamen.
Het rename.py script (jouw script dus) zet ik 1 niveau hoger en dan doe ik:
python ../rename.py
en vervolgens krijg ik de error:
Traceback (most recent call last):
File "../rename.py", line 8, in <module>
os.rename(File, NewFileSpecs)
OSError: [Errno 13] Permission denied
-
volgens mij doe jedan eencd naar die directory.
probeer het gewoon eens met de hele filespecs.
Dus python /volume1/....../rename,py
Je kunt ook de eerste regel van het script veranderen in een vast path waar de te renamenbestanden staan.
Dus:
CurrentDir = "/volume1/....."
-
Zelfs dan hou ik hetzelfde probleem.
Ik snap niet waar die permission denied vandaan komt.
-
Die tests heb ik trouwens op een linuxbak gedaan.
Als ik het op de NAS tests krijg ik ook een error maar dan een iets andere melding:
Traceback (most recent call last):
File "./reverse.py", line 9, in <module>
os.rename(File, NewFileSpecs)
OSError: [Errno 18] Invalid cross-device link
-
Was gisteren er niet helemaal bij geloof ik.
Het probleen is dat de functie os.listdir niet de volledige filespecs oplevert maar alleen de filenaam.
Hier is de code die wel moet werken.
Ik heb je regel waar de echte rename gebeurt nog even een # voor gezet zodat je eerst kunt testen.
Path = os.getcwd()
for File in os.listdir(Path):
NamePart, Ext = os.path.splitext(File)
NewFileSpecs = Path +'/'+ NamePart[::-1] + Ext
OldFileSpecs = Path +'/'+ File + Ext
#os.rename(OldFileSpecs, NewFileSpecs)
print OldFileSpecs + " --> " + NewFileSpecs
-
Bedankt voor de aanpassing.
Echter, met de print regel gaat het goed (output geeft precies het juiste weer).
Maar met os.rename gaat het fout:
Traceback (most recent call last):
File "../reverse.py", line 8, in <module>
os.rename(OldFileSpecs, NewFileSpecs)
OSError: [Errno 2] No such file or directory
-
Ik zie het al. Er zat een fout in.
Dit werkt:
import os
Path = os.getcwd()
for File in os.listdir(Path):
NamePart, Ext = os.path.splitext(File)
NewFileSpecs = Path +'/'+ NamePart[::-1] + Ext
OldFileSpecs = Path +'/'+ File
print OldFileSpecs + " --> " + NewFileSpecs
os.rename(OldFileSpecs, NewFileSpecs)
Old file specs stond '+ ext' te veel
-
Grappig is zag het ook net maar was te langzaam met typen.
-
Grappig is zag het ook net maar was te langzaam met typen.
Bedankt voor je hulp, dit moet werkbaar zijn voor mij.
fenks!!
-
Nog even en je bent zelf een volleerd python programmeur ;)
-
Ook dit draadje even met belangstelling gelezen, maar deze keer ook met verbazing. Wat voor nu heeft het @zakhooi om een bestandsnaam op die manier te hernoemen? Wat is het nut? Puur uit nieuwsgierigheid.
-
QoQ releases van film, series? Deze hebben de filenames omgedraaid om takedowns tegen te gaan.
-
QoQ heeft inmiddels ook het beruchte reverse-principe overboord gegooid en maakt thans ook gebruik van de Rename.with.this.par2 methode.
Hier is het middels deze par2 file nog 'eenvoudig' om achter de juiste gebruikte naam te komen van het betreffende bestand.
De release groep Metamorfose doet het nog anders: geen reverse, geen rename methode.
Gewoon een massa willekeurige letters/cijfers.
In de rest van de meegeleverde bestanden bevindt zich het bestand info-mkv -.txt, waarin de juiste naam staat vermeld.