2016-11-21 1 views
1

Im Versuch, eine Schleife, um mit regex, wenn ein bestimmtes Feld Einstimmungen zu überprüfen, zwei Dateien zu erstellen und zu vergleichen.Python - Wiederholungs Looping aus zwei Dateien mit regex

avi file 
TVShowName.S01E01.W.DVDRip.XviD.avi 
TVShowName.S01E02.W.DVDRip.XviD.avi 
TVShowName.S01E03.W.DVDRip.XviD.avi 

srt 
tvShowName.S01E01.episodename.DVDRip.XviD.srt 
tvShowName.S01E02.episodename.DVDRip.XviD.srt 
tvShowName.S01E03.episodename.DVDRip.XviD.srt 

Ohne eine Schleife kann ich die Datei anpassen und die Magie passieren lassen. Wenn ich die Schleife benutze, erreicht sie nur die erste Zeile.

TVShowName.S01E01.W.DVDRip.XviD.avi 
TVShowName.S01E01.W.DVDRip.XviD.srt 

Code:

f1 = open('avi', 'r') 
f2 = open('srt', 'r') 
f3 = open ('merge', 'a') 
for avi in f1: 
    m = re.search(".*([Ss][0-20].[eE][0-24].)+.*", avi) 

    for sub in f2: 
     n = re.search(".*([Ss][0-20].[eE][0-24].)+.*", sub) 
     if m.group(1) == n.group(1): 

      str_avi = str(m.group(0)) 
      #print str_avi 

      ext_srt = str_srt.split('.') 
      ext_avi = str_avi.split('.') 

      #print ext_avi 
      #conv_str = str(m.group(0)) 
      merge = str_avi.replace(ext_avi[-1],ext_srt[-1]) 
      print merge 
      f3.write(merge) 
f3.close() 
+0

Können Sie einige Eingaben Ihrer Dateien hinzufügen? –

+0

Sie definieren 'str_srt' nicht in dem bereitgestellten Code – asongtoruin

+0

Die Ausgabe ist bereits auf dem Post Mate. Ich bin mir immer noch nicht sicher, wo ich es falsch mache –

Antwort

0

Ich bin nicht ganz sicher, ob dies der Ausgang ist man wollte. Ich kann keine Kommentare hinzufügen, weil ich nicht genügend Reputationspunkte habe.

import glob 
import re 
avifiles = [] 
srtfiles = [] 
for afile in glob.glob('*.avi'): 
    avifiles.append(afile) 
for sfile in glob.glob('*.srt'): 
    srtfiles.append(sfile) 
#f1 = open('avi', 'r') 
#f2 = open('srt', 'r') 
f3 = open ('merge', 'a') 
for avi in avifiles: 
    m = re.search(".*([Ss][0-20].[eE][0-24].)+.*", avi) 

for sub in srtfiles: 
    n = re.search(".*([Ss][0-20].[eE][0-24].)+.*", sub) 
    if m.group(1) == n.group(1): 

     str_avi = str(m.group(0)) 
     str_srt = str(n.group(0)) 

     ext_srt = str_srt.split('.') 
     ext_avi = str_avi.split('.') 

     #print ext_avi 
     #conv_str = str(m.group(0)) 
     merge = str_avi.replace(ext_avi[-1],ext_srt[-1]) 
     print merge 
     f3.write(merge+"\n") 
f3.close() 
+0

Ich schrieb wieder das Skript. Es funktioniert jetzt. Ich mache nur ein paar Anpassungen und poste es. –

0

Ich machte den folgenden Code und es scheint zu funktionieren. Mein nächster Schritt ist, weitere Videoerweiterungen hinzuzufügen. Aber es sollte einfach sein. Danke Jungs Fot Helfen!

import re, os, sys, itertools 

str_avi = '' 
split_avi = '' 
global zzz 
lista_avi = [] 
lista_srt = [] 
lista_final = [] 
os.chdir('.') 
f1 = os.listdir(".") 


for full in f1: 
    avi = re.search(".*([Ss][0-9].[eE][0-9].)+.*(...$)", full) 
    if avi: 

     if avi.group(2) == 'avi': 
      lista_avi.append(avi.group(0)) 
     elif avi.group(2) == 'srt': 
      lista_srt.append(avi.group(0)) 
     else: 
      pass 
    else: 
     print "Nenhum Arquivo localizado!"  

for f,b in itertools.izip(lista_avi,lista_srt): 
    data_avi = f.split('.')  
    data_srt = b.split('.') 
    data_regx_avi = re.search(".*([Ss][0-9].[eE][0-9].)+.*(...$)", f) 
    data_regx_srt = re.search(".*([Ss][0-9].[eE][0-9].)+.*(...$)", b) 
    for x in lista_srt: 
     data_regx_srt = re.search(".*([Ss][0-9].[eE][0-9].)+.*(...$)", x) 
     if data_regx_avi.group(1) == data_regx_srt.group(1): 
      print 'Arquivo video:', data_regx_avi.group(0) 
      print 'Arquivo sub: ', f.replace(data_avi[-1],data_srt[-1]) 
      #lista_final.append(f.replace(data_avi[-1],data_srt[-1])) 
      xx = f.replace(data_avi[-1],data_srt[-1]) 
      os.rename(x, xx) 
Verwandte Themen