zoukankan      html  css  js  c++  java
  • 数据开发_Python读取CSV文件和Json文件_csv库和json库

    1.文件处理

    使用os模块
    Python3的系统标准库pathlib模块的 Path 对路径的操作会更简单
      在pathlib里一切都是面向对象的,只需要调用指定的方法就可以了
    

    2.时间格式处理和进制

      二进制 八进制 十进制 十六进制
    

    3.csv文件和Json文件的读取

     csv 和 json
    

    代码示例

    #!/usr/bin/env python
    # -*-coding:utf-8-*-
    # @file csv_input.py
    
    
    from pathlib import Path
    import csv
    import datetime
    
    
    if __name__ == "__main__":
        input_file = r'F:PythonProjectPythondatainputTestData.txt'
        # 文件验证工作
        p = Path(input_file)
        print("存在", p.exists(), "是文件", p.is_file())
        # print(p.owner(), p.group())   Path.owner() is unsupported on this system
        stat_info = p.stat()
        print(stat_info)
        # bin() 二进制0b、八进制0o和十六进制0x
        print(' Size:', stat_info.st_size)
        print(' Permissions:', hex(stat_info.st_mode))
        print(' Owner:', oct(stat_info.st_uid))
        print(' Device:', bin(stat_info.st_dev))
        print("时间戳到时间 通常该数值会被限制在 1970 至 2038 年之间")
        base_f = datetime.datetime.utcfromtimestamp(stat_info.st_ctime)
        print(type(base_f))
        # strptime(date_string, format) 将string 变为格式format 的 datetime
        # strftime # Formatting a datetime 返回的是string
        print(base_f.strftime("%A, %d. %B %Y %I:%M%p"))
        print(base_f.strftime("%Y/%m/%d %H:%M:%S"))
        print('  Create:', datetime.datetime.fromtimestamp(stat_info.st_ctime))
        print('  Last Modified Time:', datetime.datetime.fromtimestamp(stat_info.st_mtime))
        print('  Last Accessed Time:', datetime.datetime.fromtimestamp(stat_info.st_atime))
        # 文件读取操作
        with open(input_file, mode='r', encoding='utf-8') as f:
            f_csv = csv.reader(f,  delimiter='	')
            headers = next(f_csv)
            print(headers)
            # csv产生的数据都是字符串类型的,它不会做任何其他类型的转换
            # 数据类型转换 数据共有4列
            col_types = [str, float, int, str]
            for row in f_csv:
                # 数据类型转换 本语句涉及 for in 的循环 zip函数的使用 ,生成器 以及tuple() 将生成器转换为元组
                # [表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]
                # 圆括号-生成器表达式 ()
                # tuple()  元组 其中生成器对象传入到list、set、dict等函数中作为构造参数
                row = tuple(data_convert_type(data_value) for data_convert_type, data_value in zip(col_types, row))
                print(row)
    #读取Json文件 
    import json
    
    def get_job_json_info(inputfile):
        with open(inputfile, mode='r', encoding='utf-8') as f:
            # 文件而不是字符串  Reading data back
            data_dict = json.load(f)
    		#字典的形式,读取数据
            test_id = str(data_dict.get("testId"))
            test_cnt = str(data_dict.get("retryCnt"))
            test_delay_time = str(data_dict.get("retryDelayTime"))
            task_table_ls = (test_cnt, test_delay_time, test_id)
            return task_table_ls
    # 读取文件-生成器的方式
    def read_file(fpath): 
        BLOCK_SIZE = 1024 
        with open(fpath, 'rb') as f: 
            while True: 
                block = f.read(BLOCK_SIZE) 
                if block: 
                    yield block 
                else: 
                    return
    
    # yield 是一个类似 return 的关键字,只是这个函数返回的是个生成器
    生成器:
        生成器函数 作为创建迭代对象的又一种方式。
    	一切能被yield语句完成的东西也能被next方法完成
    

    参考 :

     Python之pathlib模块的使用 https://www.cnblogs.com/ygbh/articles/12762285.html
     datetime --- 基本的日期和时间类型 https://docs.python.org/zh-cn/3/library/datetime.html
  • 相关阅读:
    Unity3D串口处理
    Crixalis's Equipment 杭电 (设计贪心算法,比较巧妙,我用的是结构体排序)
    杭电 看归并排序和快速排序
    杭电acm 排名 (涉及到结构体排序)
    程序在计算机的内存(看到了一篇博客,解决了我的疑惑)
    贪心算法and排序 杭电一题的启发
    辗转相除法 杭电acm
    单调队列
    用栈的思想处理字符串倒置问题更清晰
    VS的哪些事儿之二
  • 原文地址:https://www.cnblogs.com/ytwang/p/13925174.html
Copyright © 2011-2022 走看看