Naloga

Sestavite program, ki popravi imena datotek v trenutnem direktoriju v skladu z naslednjimi pravili.
  1. Spreminjamo samo datoteke s končnicami .avi, .mpg, .mkv, .rm in .mp4.
  2. Vse pike v imenu je potrebno spremeniti v presledke. Izjema je pika pred končnico. Tako se mora "generals.at.war-the.battle.at.kursk.avi" spremeniti v "generals at war - the battle at kursk.avi"
  3. Prva beseda mora biti vedno napisana z veliko začetnico ("Generals at war - the battle at kursk.avi")
  4. Če se v besedilu pojavi pomišljaj, mora biti beseda za njim napisana z veliko začetnico ("Generals at war - The battle at kursk.avi"). Pomišljaj je znak "-", pred in za katerim je presledek. Tule ni pomišljaja: "newton-leibniz".
  5. Z veliko začetnico morajo biti napisane tudi vse ostale besede, razen končnice in besed a, an, the, above, against, along, alongside, amid, amidst, around, as, aside, astride, at, athwart, atop, before, behind, below, beneath, beside, besides, between, beyond, but, by, down, during, for, from, in, inside, into, of, on, onto, out, outside, over, per, plus, than, through, throughout, till, to, toward, towards, under, underneath, until, upon, versus, via, with, within, without. Zaradi enostavnosti predpostavljamo, da je beseda od ostalega besedila ločena s presledki. To pomeni, da v naslovu "More on Newton-leibniz Discussion.avi" besede leibniz ne obravnavamo kot besedo (ker pred njo ni presledka).
  6. Končnica mora biti napisana z malimi tiskanimi črkami.
  7. Zaporedne presledke smemo zamenjati z enim samim presledkom.
Primer: imena datotek by.the.lake.mpg generals.at.war.-.the.battle.at.kursk.avi Hubble, 15 Years Of Discovery.avi Inside the Forbidden City - 1 - secrets.AVI Killer.toads.avi Ne.Preimenuj.Me!.txt README se morajo spremeniti v By the Lake.mpg Generals at War - The Battle at Kursk.avi Hubble, 15 Years of Discovery.avi Inside the Forbidden City - 1 - Secrets.avi Killer Toads.avi Ne.Preimenuj.Me!.txt README

Rešitev


import os extensions = [".avi", ".mpg", ".mkv", ".rm", ".mp4"] notCapital = ["a", "an", "the", "above", "against", "along", "alongside", "amid", "amidst", "around", "as", "aside", "astride", "at", "athwart", "atop", "before", "behind", "below", "beneath", "beside", "besides", "between", "beyond", "but", "by", "down", "during", "for", "from", "in", "inside", "into", "of", "on", "onto", "out", "outside", "over", "per", "plus", "than", "through", "throughout", "till", "to", "toward", "towards", "under", "underneath", "until", "upon", "versus", "via", "with", "within", "without"] for fname in os.listdir("."): fname = fname.lower() base, ext = os.path.splitext(fname) if ext not in extensions: continue base = base.replace(".", " ") words = base.split() for i in range(len(words)): if i==0 or words[i-1]=="-" or words[i] not in notCapital: words[i] = words[i].capitalize() base = " ".join(words) os.rename(fname, base+ext)

Najprej spremenimo vse črke v male črke in razbijemo ime datoteke na osnovo in končnico. Če datoteka nima ustrezne končnice, nadaljujemo (continue) z naslednjo datoteko.

Če je končnica prava, pa zamenjamo vse pike s presledki in nato razbijemo ime na besede. Nato se zapeljemo čez vse besede in damo veliko začetnico tistim, ki jim je treba dati veliko začetnico. In katere so to? To so prva beseda (i==0), beseda, pred katero je bil pomišljaj (words[i-1]=="-") in tudi vse druge besede, razen tistih s seznama (words[i] not in notCapital).

Ko je to postorjeno, nam preostane le še, da združimo besede nazaj v ime (join) in preimenujemo datoteko.

Last modified: Friday, 19 October 2012, 10:18 PM