前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 小组学习 Week4-Task4

Python 小组学习 Week4-Task4

作者头像
子乾建建-Jeff
发布2020-06-29 15:16:05
8840
发布2020-06-29 15:16:05
举报
文章被收录于专栏:iBroProiBroProiBroPro

该总结参考了 CSDN 部分博主以及 菜鸟教程 ,文末有链接,侵删。

目录:

01 Python 处理常见文件

TXT 文件

CSV 文件

JSON 文件

XML 文件

02 Python 中的时间处理

01

Python 处理常见文件

1.1 TXT 文件

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

模块:使用自带的 OS 模块

函数:open() 函数

常用参数:

filename :文件名(必不可少)

encoding :对文件编码,仅适用于文本文件。

如果不明编码方式,默认是使用 locale.getpreferredencoding() 函数返回的编码方式。

mode :

描述

‘r’

只读模式(默认值)

'w'

写模式,并且写之前清空文件

'x'

独占打开文件,如果文件已存在,则打开失败

'b'

二进制模式打开文件

't'

文本模式,默认值

'a'

打开文件写,不清空,只追加

'+'

读取和写入(配合其他情况使用)

返回值:file 对象

1.2 CSV文件

CSV 是一种以逗号为分隔符的文件

Python 操作 csv 文件有两种方式,一是使用 open 函数,另一个是使用 pandas。

在 PyCharm 中,想直接操作查看 CSV 文件,需要安装一个插件 CSV Plugin

以下是两种方法的代码 demo:

'''open'''
# 加载 csv 文件
def read_csv(path, encoding="utf-8", sep="\t"):
    with open(path, "r", encoding=encoding) as file:
        lines = file.readlines()
        if sep is not None:
            lines = [line.replace("\n", "").split(sep)for line in lines]
        else:
            lines = [line.replace("\n", "")for line in lines]

    return lines


# 写入 csv 文件
def write_csv(data, path, encoding="utf-8", sep="\t"):
    with open(path, 'w+', encoding=encoding) as file:
        for line in data:
            file.write(sep.join(line).strip() + "\n")


path = "/Users/zfj/Desktop/csv.csv"
print(read_csv(path))
write_csv(read_csv(path), 'result.csv')

print("-----------------")

''' pandas '''
import pandas as pd

data_dict = {"总人数": [55, 58, 50],
             "男生": [30, 25, 18],
             "女生": [25, 33, 32]}
class_order = ['七年一班', '七年二班', '七年三班']

data_pd = pd.DataFrame(data_dict, index=class_order)
print(data_pd)
data_pd.to_csv('class_info.csv')  # python自带函数

1.3 JSON 文件

使用JSON函数

模块:导入 json 库

json.dumps 将 Python 对象编码成 JSON 字符串;

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)

输入:Python 数据类型

返回:JSON 字符串

使 JSON 数据格式化输出,可修改部分参数默认值:

sort_keys = True
indent = 4
separators = (',', ':')

json.loads 将已编码的 JSON 字符串解码为 Python 对象。

json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

输入:JSON 数据

返回:Python 字段的数据类型

Python 原始类型 与 JSON 类型

转化对照表

Python

JSON

dict

object

list, tuple

array

str, unicode

string

True

true

False

false

None

null

(参考 菜鸟教程:https://www.runoob.com/python/python-json.html,侵删。)

三方库操作 Demjson(了解)

# 将 Python 对象编码成 JSON 字符串
demjson.encode(self, obj, nest_level=0)
# 解码 JSON 数据。返回 Python 字段的数据类型
demjson.decode(self, txt)

1.4 XML 文件

操作 XML 文件,常见的方法有基于 DOM,基于 ElementTree,基于 SAX。

介绍常见的两种:

基于 DOM

import xml.dom.minidom as mididom

''' 写入xml '''

# 创建文档
# 创建的文本中 'Root' 为根节点
dom = mididom.getDOMImplementation().createDocument(None, 'Root', None)
# 获得根节点
root = dom.documentElement
# 创建节点
element = dom.createElement('节点名字')
# 给节点添加文本
element.appendChild(dom.createTextNode('文本值'))
# 设置属性
element.setAttribute('属性名', '属性值')
# 添加至节点
root.appendChild(element)


''' 读xml '''
# 读取文档
dom = mididom.parse('xxx.xml')
# 获得根节点
root = dom.documentElement
# 根据名字查找子节点(递归)
names = root.getElementsByTagName('Name')
# 获取所有子节点
root.childNodes

'''
xxx.childNodes[0].nodeValue
第一个子节点是一个 textnode,通过 nodeVlue 获取真正的节点值
'''

# 查看是否含有属性
xxx.hasAttribute('属性名')
# 查看属性
xxx.getAttribute('属性名')

准备了一份 demo 代码,后台回复 domxml 获取。

基于 ElementTree

库:

import xml.etree.ElementTree as et

写入

# 创建节点
root = el.Element('Root')
# 创建文档
tree = et.ElementTree(root)
# 设置文本值
element.text = '值'
# 设置属性
element.set('属性名', '属性值')
# 添加节点
root.append(element)
# 写入文档
tree.write('xxx.xml', encoding='utf-8', xml_declaration=True)

ElementTree 没有对换行做处理,上面写入的会直接混在一行。需要自定义一个函数来完成。该函数在源代码中有,此处不作介绍,当作工具用即可。

后台回复 elementtreexml 获取。

读取

# 读取文档:
tree = ET.parse('default.xml')
# 获得根节点:
root = tree.getroot()
# 获得所有子节点:
list(root)
# 查找子节点:
root.findall('Name') # 不递归
# 查找子节点:
root.iter('Name') # 递归查找
# 查看节点名称:
root.tag

后台回复 elementtreexml 获取 ElementTree 操作 xml 文件的完整 demo。

02

日期时间

Python 提供了 time 模块格式化日期和时间。

模块:time 获取当前时间:

localtime = time.localtime(time.time())
print("本地时间为 :", localtime)
本地时间为 : time.struct_time(tm_year=2020, tm_mon=3, tm_mday=5, tm_hour=22, tm_min=42, tm_sec=27, tm_wday=3, tm_yday=65, tm_isdst=0)

可通过下标来获取具体的年月日时分秒。

格式化后的当前时间:

localtime = time.asctime(time.localtime(time.time()) )
print("本地时间为 :", localtime)
本地时间为 : Thu Mar  5 22:42:27 2020

指定格式的时间:

strftime 方法

print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
# 周 月 日 时:分:秒 年
print(time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()))
# 时间戳
a = "Sat Mar 28 22:24:24 2016"
print(time.mktime(time.strptime(a, "%a %b %d %H:%M:%S %Y")))

结果:

2020-03-05 22:46:44
Thu Mar 05 22:46:44 2020
1583419347.0


参考链接:

https://blog.csdn.net/zichen_ziqi/article/details/100621761

https://blog.csdn.net/hu694028833/article/details/81089959

https://www.runoob.com/python/python-date-time.html

部分代码以及计算器代码,后续更新。

感谢阅读,感谢陪伴。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 iBroPro 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档