数据开发_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:\PythonProject\Python\data\input\TestData.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='\t')
        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
posted @ 2020-11-04 13:59  辰令  阅读(373)  评论(0编辑  收藏  举报