def _open_for_csv(path):
    """
    Open a file with flags suitable for csv.reader.

    This is different for python2 it means with mode 'rb',
    for python3 this means 'r' with "universal newlines".
    """
    if hasattr(path, 'readlines'):
        return path.readlines()

    if sys.version_info[0] < 3:
        return open(path, 'rb')
    else:
        return open(path, 'r', newline='')
Beispiel #2
0
def parse_config():

    #读path.txt配置文件,获得git地址信息
    path_dict={}
    with open("basecode/path.txt") as path:

        for line in path.readlines():

            if not line.startswith("#"): 

                line_info=line.split("=")
                
                line_info=[ x.strip("\n") for x in line_info ]

                path_name=line_info[0]

                path_info=line_info[1]

                path_dict[path_name]=path_info

        
    return path_dict
Beispiel #3
0
def parse_path():

    #读path.txt配置文件,获得git地址信息
    path_dict={}
    with open("basecode/path.txt") as path:

        for line in path.readlines():

            if not line.startswith("#"): 

                line_info=line.split("=")

                line_info=map((lambda x:x.strip("\n")),line_info)

                path_name=line_info[0]

                path_info=line_info[1]

                path_dict[path_name]=path_info

        
    return path_dict
Beispiel #4
0
    def from_csv(cls,
                 path,
                 column_names=None,
                 column_types=None,
                 row_names=None,
                 skip_lines=0,
                 header=True,
                 sniff_limit=0,
                 encoding='utf-8',
                 **kwargs):
        """
        Create a new table from a CSV.

        This method uses agate's builtin CSV reader, which supplies encoding
        support for both Python 2 and Python 3.

        :code:`kwargs` will be passed through to the CSV reader.

        :param path:
            Filepath or file-like object from which to read CSV data.
        :param column_names:
            See :meth:`.Table.__init__`.
        :param column_types:
            See :meth:`.Table.__init__`.
        :param row_names:
            See :meth:`.Table.__init__`.
        :param skip_lines:
            Either a single number indicating the number of lines to skip from
            the top of the file or a sequence of line indexes to skip where the
            first line is index 0.
        :param header:
            If `True`, the first row of the CSV is assumed to contains headers
            and will be skipped. If `header` and `column_names` are both
            specified then a row will be skipped, but `column_names` will be
            used.
        :param sniff_limit:
            Limit CSV dialect sniffing to the specified number of bytes. Set to
            None to sniff the entire file. Defaults to 0 or no sniffing.
        :param encoding:
            Character encoding of the CSV file. Note: if passing in a file
            handle it is assumed you have already opened it with the correct
            encoding specified.
        """
        if hasattr(path, 'read'):
            lines = path.readlines()
        else:
            with io.open(path, encoding=encoding) as f:
                lines = f.readlines()

        if utils.issequence(skip_lines):
            lines = [
                line for i, line in enumerate(lines) if i not in skip_lines
            ]
            contents = ''.join(lines)
        elif isinstance(skip_lines, int):
            contents = ''.join(lines[skip_lines:])
        else:
            raise ValueError('skip_lines argument must be an int or sequence')

        if sniff_limit is None:
            kwargs['dialect'] = csv.Sniffer().sniff(contents)
        elif sniff_limit > 0:
            kwargs['dialect'] = csv.Sniffer().sniff(contents[:sniff_limit])

        if six.PY2:
            contents = contents.encode('utf-8')

        rows = list(csv.reader(six.StringIO(contents), header=header,
                               **kwargs))

        if header:
            if column_names is None:
                column_names = rows.pop(0)
            else:
                rows.pop(0)

        return Table(rows, column_names, column_types, row_names=row_names)
Beispiel #5
0
    def from_csv(cls, path, column_names=None, column_types=None, row_names=None, skip_lines=0, header=True, sniff_limit=0, encoding='utf-8', **kwargs):
        """
        Create a new table from a CSV.

        This method uses agate's builtin CSV reader, which supplies encoding
        support for both Python 2 and Python 3.

        :code:`kwargs` will be passed through to the CSV reader.

        :param path:
            Filepath or file-like object from which to read CSV data.
        :param column_names:
            See :meth:`.Table.__init__`.
        :param column_types:
            See :meth:`.Table.__init__`.
        :param row_names:
            See :meth:`.Table.__init__`.
        :param skip_lines:
            Either a single number indicating the number of lines to skip from
            the top of the file or a sequence of line indexes to skip where the
            first line is index 0.
        :param header:
            If `True`, the first row of the CSV is assumed to contains headers
            and will be skipped. If `header` and `column_names` are both
            specified then a row will be skipped, but `column_names` will be
            used.
        :param sniff_limit:
            Limit CSV dialect sniffing to the specified number of bytes. Set to
            None to sniff the entire file. Defaults to 0 or no sniffing.
        :param encoding:
            Character encoding of the CSV file. Note: if passing in a file
            handle it is assumed you have already opened it with the correct
            encoding specified.
        """
        if hasattr(path, 'read'):
            lines = path.readlines()
        else:
            with io.open(path, encoding=encoding) as f:
                lines = f.readlines()

        if utils.issequence(skip_lines):
            lines = [line for i, line in enumerate(lines) if i not in skip_lines]
            contents = ''.join(lines)
        elif isinstance(skip_lines, int):
            contents = ''.join(lines[skip_lines:])
        else:
            raise ValueError('skip_lines argument must be an int or sequence')

        if sniff_limit is None:
            kwargs['dialect'] = csv.Sniffer().sniff(contents)
        elif sniff_limit > 0:
            kwargs['dialect'] = csv.Sniffer().sniff(contents[:sniff_limit])

        if six.PY2:
            contents = contents.encode('utf-8')

        rows = list(csv.reader(six.StringIO(contents), header=header, **kwargs))

        if header:
            if column_names is None:
                column_names = rows.pop(0)
            else:
                rows.pop(0)

        return Table(rows, column_names, column_types, row_names=row_names)
import os