Guest User

ztm.py

a guest
Dec 20th, 2015
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.31 KB | None | 0 0
  1. import os
  2. import csv
  3. import string
  4. import StringIO
  5. import re
  6. import time
  7. from datetime import datetime
  8.  
  9. from os.path import join, getsize
  10.  
  11.  
  12. def time_formater (hour,minute,last):
  13.     ret=''
  14.  
  15.     if (hour<10):
  16.         ret=ret+"0"
  17.     ret=ret+str(hour)+":"
  18.     if(minute <10):
  19.         ret=ret+"0"
  20.     ret=ret+str(minute)
  21.     if last = 0 :
  22.         ret=ret+":20,"+ret+":30"
  23.     else:
  24.         ret=ret+":00,"+ret+":15"
  25.     return ret
  26.  
  27. start_path='./data'
  28. def make_calendar ():
  29.     calendar= open('calendar.txt','w')
  30.     calendar.write( "service_id,monday,tuesday,wednesday,thursday,friday,saturday,sunday,start_date,end_date\n")
  31.     for lines  in os.listdir(start_path):
  32.         line_number=lines[:3]
  33.         date=lines[4:12]
  34.         calendar.write( lines+"P,1,1,1,1,1,0,0,"+date+",20220923\n")
  35.         calendar.write( lines+"S,0,0,0,0,0,1,0,"+date+",20220923\n")
  36.         calendar.write( lines+"N,0,0,0,0,0,0,1,"+date+",20220923\n")
  37.     calendar.close()
  38.  
  39.  
  40. def make_routes ():
  41.     routes= open('routes.txt','w')
  42.     #here i need to change print to route.write ()
  43.     routes.write('route_id,route_short_name,route_long_name,route_type\n')
  44.     for lines  in os.listdir(start_path):
  45.         variants1=next(csv.reader(open(start_path+"/"+lines+"/"+lines+"warianty1.csv",'rb'),delimiter=";"))
  46.         variants2=next(csv.reader(open(start_path+"/"+lines+"/"+lines+"warianty2.csv",'rb'),delimiter=";"))
  47.         for variant_id in variants1[4:] :
  48.                     var_id=variant_id.replace('(00:00-29:59)')
  49.                     If not var_id :
  50.                         routes.write(lines[:3]+"_"+variant_id.replace('(00:00-29:59)','')+',,'+lines[:3]+',0\n') #empty string at short name
  51.         for variant_id in variants2[4:] :
  52.             routes.write(lines[:3]+"_"+variant_id.replace('(00:00-29:59)','')+',,'+lines[:3]+',0\n') #emptystring at short name
  53.     routes.close()
  54.  
  55.  
  56. def make_kurs(): #translate
  57.     kursy_tmp= open('tmp_kursy.txt','w')
  58.     day_sign='P'
  59.     for lines  in os.listdir(start_path):
  60.         kursy1=csv.reader(open(start_path+"/"+lines+"/"+lines+"kursy1.csv",'rb'),delimiter=";")
  61.         kursy2=csv.reader(open(start_path+"/"+lines+"/"+lines+"kursy2.csv",'rb'),delimiter=";")
  62.         for kurs in kursy1 :
  63.             if (kurs[0]=='99'):
  64.                 if (kurs[1][0]=='D'): ## kononczys tu robie oznaczenie dnia ktore bedzie trzecia kolumna
  65.                     day_sign='P'  
  66.                 if (kurs[1][0]=='S'):
  67.                     day_sign='S'
  68.                 if(kurs[1][0]=='N'):
  69.                     day_sign='N'
  70.             else:
  71.                 #print kurs
  72.                 kursy_tmp.write( kurs[0]+","+kurs[1]+","+day_sign+','+lines[:3]+'\n' )
  73.         for kurs in kursy2 :
  74.             if (kurs[0]=='99'):
  75.                 if (kurs[1][0]=='D'): ## kononczys tu robie oznaczenie dnia ktore bedzie trzecia kolumna
  76.                     day_sign='P'  
  77.                 if (kurs[1][0]=='S'):
  78.                     day_sign='S'
  79.                 if(kurs[1][0]=='N'):
  80.                     day_sign='N'
  81.             else:
  82.                 #print kurs
  83.                 kursy_tmp.write(kurs[0]+","+kurs[1]+","+day_sign+','+lines[:3]+"\n")
  84.     #kursy_tmp.close()
  85.  
  86. def make_trips():
  87.     trips=open('./trips.txt','w')
  88.     trips.write("route_id,service_id,trip_id\n")
  89.     routes=csv.reader(open('routes.txt','rb'),delimiter=',')
  90.     routes.next()
  91.     for route in routes:       
  92.         calendar=csv.reader(open('calendar.txt','rb'),delimiter=',')
  93.         calendar.next()
  94.         for cal in calendar:
  95.             kursy=csv.reader(open('./tmp_kursy.txt','rb'),delimiter=',')
  96.             for kurs in kursy:
  97.                 if (route[0][:3]==kurs[3] and route[0][4:]==kurs[1] and cal[0][-1:]==kurs[2] and cal[0][:3]==kurs[3]) :
  98.                     trips.write(route[0]+','+cal[0]+','+route[0]+'-'+kurs[0]+'-'+cal[0]+"\n")
  99.                     print" ."
  100.     trips.close()
  101.  
  102. def make_stop_times():
  103.     stop_times=open('stop_times.txt','w')
  104.     stop_times.write("trip_id,arrival_time,departure_time,stop_id,stop_sequence\n")
  105.     trips=csv.reader(open('./trips.txt','rb'),delimiter=',')
  106.     trips.next()
  107.     for trip in trips:
  108.         variantX=re.sub(r'.*(X[0-9]*).*', r'\1', trip[2])
  109.         line=re.sub(r'.*[^0-9]([0-9]{3})[^0-9].*', r'\1', trip[2])
  110.         start_time=re.sub(r'.*([0-9][0-9]:[0-9][0-9]).*', r'\1', trip[2])  
  111.         folder=re.sub(r'.*-([0-9]{3}_[0-9]{8}_?[0-9]?).*', r'\1', trip[2])
  112.         #print variant+""+" "+line+" "+start_time+" "+folder
  113.         variants1=csv.reader(open(start_path+"/"+folder+"/"+folder+"warianty1.csv",'rb'),delimiter=';')
  114.         head=variants1.next()
  115.         #print head
  116.         col=0
  117.         for i in xrange(4,len(head)):
  118.             if(variantX+"(00:00-29:59)"==head[i]):
  119.                 col=i
  120.                 break
  121.         #print str(col)+" "+variantX
  122.         if (col!=0): #zero mean we dont find any mach
  123.             travel_time=0
  124.             last=1
  125.             for variant in variants1 :
  126.                
  127.                 if (variant[col]!=''):
  128.                     #print variant[0]+" "+variant[1]+" "+variant[col]
  129.                     if last == 0 and int(variant[col]) == 0 : #dirty hack for search 2 zero times runS
  130.                         last=0
  131.                     else:
  132.                         last=1
  133.                     travel_time=travel_time+int(variant[col])
  134.                     hour=int(re.sub(r"([^:]*):.*",r'\1',start_time))
  135.                     inute=int(re.sub(r".*:(.*)",r'\1',start_time))
  136.                     minute=minute+travel_time
  137.                     while (minute>=60):
  138.                         minute=minute-60
  139.                         hour=hour+1
  140.                     stop=re.sub(r".*[^0-9]([0-9]{3,4})[^0-9].*",r'\1',variant[1])
  141.                     stop_times.write(trip[2]+','+time_formater(hour,minute,last)+','+stop+','+variant[0]+'\n')
  142.                     last=int(variant[col])
  143.                     #print variant[0]+"\t"+variant[1]+" -"+stop+"-\t"+variant[col]+"\t"+str(hour)+":"+str(minute)+"\t"+variantX+"\t"
  144.         variants2=csv.reader(open(start_path+"/"+folder+"/"+folder+"warianty2.csv",'rb'),delimiter=';')
  145.         head=variants2.next()
  146.         #print head
  147.         col=0
  148.         for i in xrange(4,len(head)):
  149.             if(variantX+"(00:00-29:59)"==head[i]):
  150.                 col=i
  151.                 break
  152.         #print str(col)+" "+variantX
  153.         if (col!=0): #zero mean we dont find any mach
  154.             travel_time=0
  155.             last=1
  156.             for variant in variants2:
  157.                 if (variant[col]!=''):
  158.                     if last == 0 and int(variant[col]) == 0 : #dirty hack for search 2 zero time runs
  159.                         last=0
  160.                     else:
  161.                         last=1
  162.                     #print variant[0]+" "+variant[1]+" "+variant[col]
  163.                     travel_time=travel_time+int(variant[col])
  164.                     hour=int(re.sub(r"([^:]*):.*",r'\1',start_time))
  165.                     minute=int(re.sub(r".*:(.*)",r'\1',start_time))
  166.                     minute=minute+travel_time
  167.                     while (minute>=60):
  168.                         minute=minute-60
  169.                         hour=hour+1
  170.                     stop=re.sub(r".*[^0-9]([0-9]{3,4})[^0-9].*",r'\1',variant[1])
  171.                     stop_times.write(trip[2]+','+time_formater(hour,minute,last)+','+stop+','+variant[0]+'\n')
  172.                     last=int(variant[col])
  173.     stop_times.close()
  174.  
  175. make_kurs()
  176. print "kursy_tmp.txt\t done"
  177. make_calendar()
  178. print "calenar.txt\t done"
  179. make_routes()
  180. print "routes.txt\t done"
  181. #make_trips() #no drugs
  182. print "trips.txt\t done"
  183. #make_stop_times()
  184. print "stoptimes.txt\t done"
Advertisement
Add Comment
Please, Sign In to add comment