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