该总结参考了 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
部分代码以及计算器代码,后续更新。
感谢阅读,感谢陪伴。