python读取csv数据代码_数据开发_Python读取CSV文件和Json文件_csv库和json库

本文介绍了Python中pathlib模块的使用,通过面向对象的方式简化了文件路径的操作。同时,文章讲解了时间格式处理,包括二进制、八进制、十进制和十六进制之间的转换,以及时间戳到日期的转换。此外,还展示了如何读取csv和json文件,提供了读取csv文件并进行数据类型转换的示例,以及json文件的加载方法。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值