python3文件写
⑴ 如何使用python3读写INI配置文件
ini文件简介
ini是我们常见到的配置文件格式之一。
ini是微软Windows操作系统中的文件扩展名(也常用在其他系统)。
INI是英文“初始化(Initial)”的缩写。正如该术语所表示的,INI文件被用来对操作系统或特定程序初始化或进行参数设置。
网络
通过它,可以将经常需要改变的参数保存起来(而且还可读),使程序更加的灵活。
我先给出一个ini文件的示例。
[School]
ip = 10.15.40.123
mask = 255.255.255.0
gateway = 10.15.40.1
dns = 211.82.96.1
[Match]
ip = 172.17.29.120
mask = 255.255.255.0
gateway = 172.17.29.1
dns = 0.0.0.0
这个配置文件中保存的是不同场合下的IP设置参数。
下面将以生成和读取这个配置文件为例,进行讲解。
Python(v3)读取方法
首先,Python读取ini配置需要用到ConfigParser包,所以要先加载它。
import configparser
之后我们需要载入配置文件。
config=configparser.ConfigParser()
#IpConfig.ini可以是一个不存在的文件,意味着准备新建配置文件。
config.read("IpConfig.ini")
接下来,我们可以使用configparser.add_section()向配置文件中添加一个Section。
#添加节School
config.add_section("School")
注意:如果文件中已经存在相应的项目,则不能再增加同名的节。
然后可以使用configparser.set()在节School中增加新的参数。
#添加新的IP地址参数
config.set("School","IP","192.168.1.120")
config.set("School","Mask","255.255.255.0")
config.set("School","Gateway","192.168.1.1")
config.set("School","DNS","211.82.96.1")
你可以以同样的方式增加其它几项。
#由于ini文件中可能有同名项,所以做了异常处理
try:
config.add_section("Match")
config.set("Match","IP","172.17.29.120")
config.set("Match","Mask","255.255.255.0")
config.set("Match","Gateway","172.17.29.1")
config.set("Match","DNS","0.0.0.0")
except configparser.DuplicateSectionError:
print("Section 'Match' already exists")
增加完所有需要的项目后,要记得使用configparser.write()进行写入操作。
config.write(open("IpConfig.ini", "w"))
以上就是写入配置文件的过程。
接下来我们使用configparser.get()读取刚才写入配置文件中的参数。读取之前要记得读取ini文件。
ip=config.get("School","IP")
mask=config.get("School","mask")
gateway=config.get("School","Gateway")
dns=config.get("School","DNS")
print((ip,mask+"\n"+gateway,dns))
完整示例
下面是一个完整的示例程序,他将生成一个IpConfig.ini的配置文件,再读取文件中的数据,输出到屏幕上。
# -*- coding: utf-8 -*-
import configparser
#读取配置文件
config=configparser.ConfigParser()
config.read("IpConfig.ini")
#写入宿舍配置文件
try:
config.add_section("School")
config.set("School","IP","10.15.40.123")
config.set("School","Mask","255.255.255.0")
config.set("School","Gateway","10.15.40.1")
config.set("School","DNS","211.82.96.1")
except configparser.DuplicateSectionError:
print("Section 'School' already exists")
#写入比赛配置文件
try:
config.add_section("Match")
config.set("Match","IP","172.17.29.120")
config.set("Match","Mask","255.255.255.0")
config.set("Match","Gateway","172.17.29.1")
config.set("Match","DNS","0.0.0.0")
except configparser.DuplicateSectionError:
print("Section 'Match' already exists")
#写入配置文件
config.write(open("IpConfig.ini", "w"))
ip=config.get("School","IP")
mask=config.get("School","mask")
gateway=config.get("School","Gateway")
dns=config.get("School","DNS")
print((ip,mask+"\n"+gateway,dns))
总结
Python读取ini文件还是十分简单的,这里我给出的只是一些简单的使用方法,如果想用更高级的功能,比如和注释有关的功能。可以参考Pyhton官方文档
⑵ python3实现comtrade格式解析详解
本文以Python3为开发环境,深入解析comtrade格式文件,详细步骤如下。
首先,确保使用Python3版本。因其在处理文件与字符串时更为简便,且对于中文与字符编码的支持较好。
解析的目标文件包括cfg配置文件与dat数据文件,这两类文件在国内应用广泛。
针对非变采样率模式,且格式版本为1999的comtrade文件进行解析。
dat文件采用二进制格式,文件处理前需要准备。
读取并解析cfg配置文件,将内容存储至cfg变量中,文件内容按照行分隔,以便进行逐行解析。
从配置信息中,可以获取通道数量以及模拟量通道的详细参数,包括读取频率。
根据获取信息计算采样频率与采样长度,完成cfg文件的初步解析。
进入dat文件处理阶段,注意其模式设置为bytes模式,读取到dat变量的是bytes数据流。
计算dat文件的总长度,以便后续处理。
comtrade格式的dat文件中,数据按包形式组织,每个包对应一个采样点,计算包的长度。
数据包包含整型与短整型,利用struct.unpack函数进行转换。根据模拟量个数与数字量格式,生成相应的format_str字符串。
所有采样点对应的所有数据被保存在MONI_CYD变量中,至此,所有数据读取完毕,完成后续数据的二次处理。
⑶ Python3文件重命名
因为你没有“E:/tensorflow/初赛训练数据/test/callreason”该目录
你应该在代码里加入对目录的判定
具体代码如下
#-*-coding:utf-8-*-
#coding=utf-8
importos
ul=r"E:/tensorflow/初赛训练数据/test/callreason"
folder=os.path.exists(ul)
ifnotfolder:#判断是否存在文件夹如果不存在则创建为文件夹
os.makedirs(ul)
filenamelist=os.listdir(ul)
foryinrange(len(filenamelist)):
f=open(ul+'/'+filenamelist[y],"r",encoding='utf-8')
modname=f.readline()
f.close()
newurl=ul+"/"+modname[:-1]+".txt"
os.rename(os.path.join(ul,filenamelist[y]),newurl)
print("执行成功")
执行结果<注意红色框里的代码,这就是需要你加入的代码,用于判断目录是否存在>: