python应用实例
0.python基础
python基础1
python基础2
python基础3
python基础4
1. python获取文件夹下所有文件的两种方式
方法一:递归
import os
def list_dir(text_list,dir_path):
dir_files = os.listdir(dir_path) # 得到该文件夹下所有的文件
for file in dir_files:
file_path = os.path.join(dir_path, file) # 路径拼接成绝对路径
if os.path.isfile(file_path): # 如果是文件,就打印这个文件路径
if file_path.endswith(".txt"):
text_list.append(file_path)
if os.path.isdir(file_path): # 如果目录,就递归子目录
list_dir(text_list,file_path)
return text_list
if __name__ == '__main__':
all_txt = []
thesaurus_path = r"dir_path"
text_list = list_dir(all_txt,thesaurus_path)
for text in text_list:
print(text)
方法二:os.walk()(推荐)
import os
#遍历所有文件夹下的文件
def walk_files(path,endpoint=None):
file_list = []
for root,dirs,files in os.walk(path):
for file in files:
file_path = os.path.join(root,file)
if file_path.endswith(endpoint):
file_list.append(file_path)
return file_list
if __name__ == '__main__':
wav_path = r"dir_path"
text_list = walk_files(wav_path, endpoint=".txt")
print(text_list)
2. python 读写csv文件
写入
# 导入CSV模块
import csv
# 1. 创建文件对象(指定文件名,模式,编码方式)
with open("file.csv", "w", encoding="gbk", newline="") as f:
# 2. 基于文件对象构建 csv写入对象
csv_writer = csv.writer(f)
# 3. 构建列表头
csv_writer.writerow(["name", "age", "gender"])
# 4. 写入csv文件内容
csv_writer.writerow(["jack", "18", "men"])
csv_writer.writerow(["alex", "20", "women"])
print("写入数据成功")
# 5. 关闭文件
f.close()
读取
方法1:csv.reader()
import csv
with open('../data/test.csv') as csvfile:
# 生成csv迭代器
reader = csv.reader(csvfile)
# 获取headers
header = next(reader)
print(header)
# 遍历每一行
for row in reader:
print(row)
###
['name', 'time']
['GF2_PMS1_E108.6_N18.7_20230129_L1A0007080026-MSS1.xml', '2023-01-29T10:37:22']
['GF2_PMS1_E108.6_N18.7_20230129_L1A0007080026-PAN1.xml', '2023-01-29T10:37:23']
['GF2_PMS1_E108.6_N18.9_20230129_L1A0007080016-MSS1.xml', '2023-01-29T10:37:20']
['GF2_PMS1_E108.6_N18.9_20230129_L1A0007080016-PAN1.xml', '2023-01-29T10:37:20']
###
3. python 读写xml文件
方法1 DOM解析
xml文件解析,首先将xml文件加载进内存,然后读取文件中的内容,在内存将文件以树的结构进行保存,树根在上,树枝在下,整个xml文件被封装为Document对象,文件中的标签节点被封装为Node对象,标签节点中保存但数据被封装为Text对象。
Document:表示整个文件对象
Node:表示标签对象
Text:表示标签中数据的内容
import xml.dom.minidom
dom = xml.dom.minidom.parse('test.xml') #解析xml文件
root = dom.documentElement #获取xml文档对象,对象类型是Element对象,并且是根节点
print(root.nodeName) #打印根结点的名字
print(root.nodeValue) #打印根结点的名字,只对文本节点有效(/p,/li等等)
print(root.nodeType) #打印结点类型
getElementsByTagName():返回某个结点下具有指定标记的所有节点列表
(可以使用这个方法+for来遍历xml文档)
testList = root.getElementsByTagName('test') #获取/root结点下所有标记为test结点,有13个
for item in testList:
testChildList = item.getElementsByTagName('item')#获取每个test下的所有标记为item结点
print(testChildList)
实例:
#xml文件
<students>
<student name='刘备' sex='男' age='35'/>
<student name='吕布' sex='男' age='38'/>
<student name='貂蝉' sex='女' age='22'/>
<p>hello</p>
</students>
import xml.dom.minidom
dom = xml.dom.minidom.parse('test.xml')
root = dom.documentElement #students结点
print(root.getAttribute('name'))
testList = root.getElementsByTagName('student')
print(len(testList))
for item in testList:
# print(item.getAttribute('name')) #获取标签对应的属性值
# print(item.firstChild.data) #获取标签的text值
print(f"姓名:{item.getAttribute('name')},性别:{item.getAttribute('sex')},年龄:{item.getAttribute('age')}")
方法2 ElementTree解析方法
python操作xml的常用方法
解析XML文档:
ET.parse(file_path):解析XML文件并返回ElementTree对象。
ET.fromstring(xml_string):解析XML字符串并返回根元素的Element对象。
获取元素:
ElementTree.getroot():获取XML文档的根元素。
Element.find(tag):查找具有指定标签的第一个子元素。
Element.findall(tag):查找具有指定标签的所有子元素。
Element.get(key):获取元素的指定属性值。
遍历元素:
使用for循环遍历子元素,例如 for child in root: …。
操作元素的文本和属性:
Element.text:获取或设置元素的文本内容。
Element.attrib:获取或设置元素的属性字典。
Element.set(key, value):设置元素的指定属性值。
创建新元素:
ET.Element(tag):创建一个具有指定标签的新元素对象。
Element.text:设置新元素的文本内容。
Element.set(key, value):设置新元素的属性值。
添加和删除元素:
Element.append(child):将子元素添加到父元素的末尾。
Element.remove(child):从父元素中删除指定的子元素。
修改XML文档:
更新元素的文本和属性,使用Element.text和Element.set()方法。
添加新元素,使用Element.append()方法。
删除元素,使用Element.remove()方法。
保存XML文档:
ElementTree.write(file_path):将修改后的XML文档写入到文件中。
import xml.etree.ElementTree as ET
# 1. 读取XML文档
tree = ET.parse('example.xml')
root = tree.getroot()
# 解析XML字符串并返回根元素的Element对象
# xml_string = '<root><element>Value</element></root>'
# root = ET.fromstring(xml_string)
# 2. 遍历XML文档
for child in root:
print('Tag:', child.tag)
print('Text:', child.text)
print('Attributes:', child.attrib)
# 3. 读取元素的内容
element = root.find('element_name')
if element is not None:
text = element.text
attributes = element.attrib
# 4. 写入新的元素
new_element = ET.Element('new_element')
new_element.text = 'New element text'
new_element.set('attribute_name', 'attribute_value')
root.append(new_element)
# 5. 修改元素的内容和属性
element.text = 'Modified text'
element.set('attribute_name', 'new_value')
# 6. 删除元素
child_to_remove = root.find('element_to_remove')
if child_to_remove is not None:
root.remove(child_to_remove)
# 7. 保存修改后的XML文档
tree.write('modified.xml')
类方法 | 说明 |
---|---|
Element.iter(tag=None) | 遍历该Element所有后代,也可以指定tag进行遍历寻找。 |
Element.iterfind(path, namespaces=None) | 根据tag或path查找所有的后代。 |
Element.itertext() | 遍历所有后代并返回text值。 |
Element.findall(path) | 查找当前元素下tag或path能够匹配的直系节点 |
Element.findtext(path, default=None, namespaces=None) | 寻找第一个匹配子元素,返回其text值。匹配对象可以为tag或path。 |
Element.find(path) | 查找当前元素下tag或path能够匹配的首个直系节点。 |
Element.text | 获取当前元素的text值。 |
Element.get(key, default=None) | 获取元素指定key对应的属性值,如果没有该属性,则返回default值。 |
Element.keys() | 返回元素属性名称列表 |
Element.items() | 返回(name,value)列表 |
使用list() | 变成可遍历的数组 |
Element.getiterator(tag=None) | |
Element.getiterator(self, tag=None) |
Python操作XML教程:读取、写入、修改和保存XML文档
python中读取xml文件