python应用5

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文件

4

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值