• 数据开发_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
  • 相关阅读:
    Android开发 ViewConfiguration View的配置信息类
    Android 开发 倒计时功能 转载
    Android 开发 关于7.0 FileUriExposedException异常 详解
    Android 开发 实现文本搜索功能
    Android 开发 Activity里获取View的宽度和高度 转载
    Android 开发 存储目录的详解
    Android 开发 Fresco框架点击小图显示全屏大图实现 ZoomableDraweeView
    Android 开发 将window变暗
    Android 开发 DisplayMetrics获取Android设备的屏幕高宽与其他信息
    Android 开发 DP、PX、SP转换详解
  • 原文地址:https://www.cnblogs.com/ytwang/p/13925174.html
Copyright © 2020-2023  润新知