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

  • 相关阅读:
    java 学习之JVM深入分析(一)
    选择排序算法实现十个1100的随机数的排序
    spring基础知识概述
    mybatis 总结一
    ACM之java判断回文数
    Spring mvc框架
    C#实现窗体最小化到状态栏,双击运行时又能正常显示窗体
    Android调用相机并将照片存储到SD卡上实现方法
    c#中如何让一个窗体在另一个旁边
    C#实现获取时间
  • 原文地址:https://www.cnblogs.com/SunshineKimi/p/12031042.html
Copyright © 2011-2022 走看看