zoukankan      html  css  js  c++  java
  • ioutils

    import yaml
    import json
    import csv
    import configparser
    
    
    class IoUtils(object):
    
        """
        dependency:  pip install pyyaml
    
        yaml_r: read yaml ,return dict
    
        yaml_w: write yaml,data type is dict
    
        json_r: read json file ,return dict
    
        json_w: write json file ,data type is dict
    
        csv_r: read csv file ,return list format is:
        [
            [header],
            [column1,column2,....],
             .....
         ]
    
        csv_w: write data into csv file
        data format is :
            [
             [],[],
             ......
            ]
        or like this format:
            [
            (),()
            ......
            ]
    
        read_config: read ini file :
        return items of section or object of config or only option value
    
    
        """
    
        def yaml_r(self, filepath) -> dict:
            with open(filepath, 'r') as f:
                data = yaml.load(f, Loader=yaml.Loader)
            return data
    
        def yaml_w(self, filepath, data: dict):
            with open(filepath, 'w', encoding="utf-8") as f:
                yaml.dump(data, f)
    
        def json_r(self, filepath) -> dict:
            with open(filepath, 'r+')as f:
                return json.load(f)
    
        def json_w(self, filepath, data: dict):
            with open(filepath, "w+", encoding="utf-8")as f:
                json.dump(data, f, indent=2, ensure_ascii=False)
    
        def csv_r(self, csv_path) -> list:
    
            with open(file=csv_path, mode="r")as f:
                data = csv.reader(f, dialect='excel', delimiter=',', quotechar='|')
                data_set = [i for i in data]
            return data_set
    
        def csv_w(self, csv_path, data):
            with open(file=csv_path, mode='w', newline='')as f:
                wt = csv.writer(f)
                wt.writerows(data)
    
        def readConfig(self, filepath, section=None, option=None,
                       section_only=False, option_only=False,):
            config = configparser.ConfigParser()
            config.read(filepath)
            if section and section_only:
                return config.items(section)
            if option and option_only:
                return config.get(section=section,option=option)
            if not section_only and not option_only:
                return config
    
        def opens(self, filepath, mode, data=None):
            """r or w file """
            if mode == "r" or mode == "r+":
                with open(filepath, mode)as file:
                    lines = file.readlines()
                return lines
            if mode == "w" or mode == "r+" and not data:
                with open(filepath, mode)as file:
                    file.write(data)
    

      io

  • 相关阅读:
    常用的字符集编码
    live555—VS2010/VS2013 下live555编译、使用及测试(转载)
    win32下Socket编程(转载)
    do{...}while(0)的意义和用法(转载)
    C++ static与单例模式
    MFC多线程各种线程用法 .
    a^1+b problem
    重返现世——题解
    第K大C
    懒癌
  • 原文地址:https://www.cnblogs.com/SunshineKimi/p/12031042.html
Copyright © 2011-2022 走看看