Hi!
Ich habe eine Datei die folgendermassen aussieht:
TITLE: FILM
FCM: NON-DROP FRAME
001 BL V C 00:00:00:00 00:00:00:00 00:59:53:00 00:59:53:00
001 25ER_STA V D 095 01:00:00:00 01:00:07:00 00:59:53:00 01:00:00:00
* EFF2_BLEND_DISSOLVE
* TO CLIP NAME: 25ER START
* SOURCE FILE: (NULL)
002 B006C016 V C 08:56:57:14 08:57:05:08 01:00:00:00 01:00:07:19
* FROM CLIP NAME: 1/1-2 MOS
* SOURCE FILE: B006C016_110513_R34X
003 B006C019 V C 09:09:33:09 09:09:41:06 01:00:07:19 01:00:15:16
* FROM CLIP NAME: 1/0-3 MOS
* SOURCE FILE: B006C019_110513_R34X
004 B007C001 V C 09:20:34:20 09:20:39:16 01:00:15:16 01:00:20:12
* EFF2_BLEND_FLIP_HORZ
* FROM CLIP NAME: 1/2-1
* SOURCE FILE: B007C001_110513_R34X
Die Datei ist sehr viel laenger als der Auszug hier sonst wuerde ich es haendisch machen. Was passieren muesste: Der Teil der hinter * SOURCE FILE: kommt also zB B006C016_110513_R34X muss eingelesen werden und dann das Obere ersetzen hinter 002 also B006C016 sodass dann bei Nr2 nicht mehr steht: 002 B006C016 V C 08:56:57:14 08:57:05:08 01:00:00:00 01:00:07:19
sondern eben 002 B006C016_110513_R34X V C 08:56:57:14 08:57:05:08 01:00:00:00 01:00:07:19
Meine Idee war, alle * SOURCE FILE in ein Array zu laden und dann die Liste nochmal abarbeiten und die 001, 002, 003 usw ersetzen. Weiss nur nicht, wie ich mir die entsprechenden Zeichenketten vernuenftig rauspicke... Waere super, wenn da jemand helfen koennte!
Vielen Dank und Gruss
Zeichensatz in Datei suchen und an bestimmter Stelle ersetze
so. habe mich jetzt gar nicht mehr gemeldet. Habe es dann doch noch hinbekommen, dank Galileos Openbook. Vielleicht hat ja noch jemand Verwendung dafür. Muss man aber je nach EDL anpassen, da Final Cut Pro zB etwas andere EDLs ausspuckt als Avid. Viel Spaß:
Code: Alles auswählen
import sys
edl = sys.argv[1]
src_edl = open(edl, "r")
src_file_list = []
unknown_src_name = []
for line in src_edl:
unknown_src_name = line.split()
if line.startswith("* SOURCE FILE:") and unknown_src_name[3] != "(NULL)":
src_file_list.append(line.lstrip("* SOURCE FILE: ").strip())
"""print(src_file_list)"""
src_edl.close()
src_edl = open(edl, "r")
mod_edl = open(src_edl.name.rstrip(".EDL")+"_mod.EDL", "w")
split_line = []
i = 0
for new_line in src_edl:
split_line = new_line.split()
if split_line[0].isdigit() == True and split_line[3] == "C" and split_line[1] != "BL":
new_tape_name = src_file_list[i]
old_tape_name = split_line[1]
line_to_write = new_line.replace(old_tape_name, new_tape_name)
i = i+1
print(old_tape_name+" -> "+new_tape_name)
mod_edl.write(line_to_write)
else:
mod_edl.write(new_line)
mod_edl.close()
src_edl.close()
Ein paar Anmerkungen:
- Das OpenBook ist nicht die optimale Basis: http://bj.spline.de/python_openbook.html
- Eingerückt wird normalerweise mit 4 Leerzeichen
- sys.argv[1] - was passiert wenn es sys.argv[1] nicht gibt? Ich empfehle dir argparse mal anzuschauen
- Dateien öffnet man am Besten mit dem `with`-Statement
- am besten ein "if __name__ == '__main__': main()" Konstrukt verwenden, das ermöglicht dir das Importieren dieser Datei
//Edit: siehe eins weiter unten
- Das OpenBook ist nicht die optimale Basis: http://bj.spline.de/python_openbook.html
- Eingerückt wird normalerweise mit 4 Leerzeichen
- sys.argv[1] - was passiert wenn es sys.argv[1] nicht gibt? Ich empfehle dir argparse mal anzuschauen
- Dateien öffnet man am Besten mit dem `with`-Statement
- am besten ein "if __name__ == '__main__': main()" Konstrukt verwenden, das ermöglicht dir das Importieren dieser Datei
//Edit: siehe eins weiter unten
Zuletzt geändert von Dav1d am Dienstag 25. Oktober 2011, 14:36, insgesamt 1-mal geändert.
the more they change the more they stay the same
Oh, ich wollte natürlich 4 schreiben (im Code sind es 3)
the more they change the more they stay the same