コード例 #1
0
ファイル: utils.py プロジェクト: priyanz3/FlightDataAnalyzer
def open_node_container(zip_path):
    '''
    Opens a zip file containing nodes and yields (flight_pk, nodes, attrs) tuples.

    TODO: Do not compress to the current directory.

    :param zip_path: Path of node container zip file.
    :type zip_path: str
    '''
    with zipfile.ZipFile(zip_path, 'r') as zip_file:
        filenames = set(zip_file.namelist())

        flight_filenames = defaultdict(dict)

        for filename in filenames:
            match = re.match('^(?P<flight_pk>\d+) - (?P<node_name>[-\w\d\s\*()%\[\]]+).nod$', filename)
            if not match:
                if not re.match('^(?P<flight_pk>\d+)\.json$', filename):
                    print("Skipping invalid filename '%s'" % filename)
                continue

            groupdict = match.groupdict()
            flight_filenames[groupdict['flight_pk']][groupdict['node_name']] = filename

        for flight_pk, node_filenames in six.iteritems(flight_filenames):
            nodes = {}
            for node_name, filename in six.iteritems(node_filenames):
                nodes[node_name] = loads(zip_file.read(filename))

            json_filename = '%s.json' % flight_pk
            attrs = simplejson.loads(zip_file.read(json_filename)) if json_filename in filenames else {}

            yield flight_pk, nodes, attrs
コード例 #2
0
def open_node_container(zip_path):
    '''
    Opens a zip file containing nodes and yields (flight_pk, nodes, attrs) tuples.

    TODO: Do not compress to the current directory.

    :param zip_path: Path of node container zip file.
    :type zip_path: str
    '''
    with zipfile.ZipFile(zip_path, 'r') as zip_file:
        filenames = set(zip_file.namelist())

        flight_filenames = defaultdict(dict)

        for filename in filenames:
            match = re.match('^(?P<flight_pk>\d+) - (?P<node_name>[\w\d\s\*()]+).nod$', filename)
            if not match:
                if not re.match('^(?P<flight_pk>\d+)\.json$', filename):
                    print "Skipping invalid filename '%s'" % filename
                continue

            groupdict = match.groupdict()
            flight_filenames[groupdict['flight_pk']][groupdict['node_name']] = filename

        for flight_pk, node_filenames in flight_filenames.iteritems():
            nodes = {}
            for node_name, filename in node_filenames.iteritems():
                nodes[node_name] = loads(zip_file.read(filename))

            json_filename = '%s.json' % flight_pk
            attrs = simplejson.loads(zip_file.read(json_filename)) if json_filename in filenames else {}

            yield flight_pk, nodes, attrs
コード例 #3
0
def open_node_container(zip_path):
    '''
    Opens a zip file containing nodes.
    
    TODO: Do not compress to the current directory.
    '''
    with zipfile.ZipFile(zip_path, 'r') as zip_file:
        filenames = zip_file.namelist()
        
        flight_filenames = defaultdict(dict)
        
        for filename in filenames:
            match = re.match('^(?P<flight_pk>\d+) - (?P<node_name>[\w\d\s()]+).nod$', filename)
            if not match:
                print "Skipping invalid filename '%s'" % filename
                continue
            
            groupdict = match.groupdict()
            flight_filenames[groupdict['flight_pk']][groupdict['node_name']] = filename
        
        for flight_pk, node_filenames in flight_filenames.iteritems():
            nodes = {}
            for node_name, filename in node_filenames.iteritems():
                nodes[node_name] = loads(zip_file.read(filename))
            
            yield flight_pk, nodes