python 读取固定格式文件

环境:这几天在使用python开发程序的过程中,需要连接到mysql数据库,而且涉及到不同的服务器和不同的数据库,前期使用测试服来做测试,不想在python程序里频繁去更改数据库的配置信息,于是想到将全部的数据库配置写进一个db.conf文件里去读取,也是基于安全性的考虑。
于是写了一个基于固定格式的文件读取程序,案例如下。
测试文件内容:
title1
1,line 1
2,line 2
3,line 3
title2
4,line 4
5,line 5
6,line 6
title3
7,line 7
8,line 8
9,line 9

程序文件:

def open_file(filename, mode=‘r‘):
    """
    :param filename:
    :param mode:
    :return: 返回文件句柄
    """
    try:
        the_file = open(filename, mode)
    except IOError:
        print "Unable to open the file", filename
        sys.exit(0)
    else:
        return the_file
def next_line(the_file):
    """
    :param the_file:
    :return: 读取一行文件内容
    """
    line = the_file.readline()
    return line
def next_block(the_file):
    """
    :param the_file:
    :return: 读取指定格式的一段内容
    """
    title = next_line(the_file)
    # cg = next_line(the_file)
    content = []
    for i in range(3): #3为文件内容的行数
        content.append(next_line(the_file))
    return title, content
my_file = open_file(‘1.txt‘, ‘r‘)
a = raw_input("enter you name: ")  #可以在函数中以变量来调用,这里仅做测试用
for i in range(3): #3为格式内容的段数
    tit = next_block(my_file)
    if a == tit[0].strip(‘\n‘):
        print "TITLE IS :", tit[0]
        for j in range(3):
            print "content ", (j+1), "is: ", tit[1][j].strip(‘\n‘)
        break
else:
    print ‘no this title‘
    exit(0)

这样,对于我的数据库配置信息就很好根据需要来进行获取了,只需要将title放进python程序就可以去处对应的数据库连接信息

[test]

user:root

password:123456

db_name:study

host:127.0.0.1

port:3306

charset:utf8

[mysql]

user:root

password:123456

db_name:wwwsite

host:127.0.0.1

port:3306

charset:utf8

。。。。。

时间: 04-25

python 读取固定格式文件的相关文章

Python读取jsonlines格式文件

Python读取jsonlines格式文件 json lines文件是一种便于存储结构化数据的格式,可以一次处理一条记录.可以用作日志文件或者其他.每条json数据之间存在一个"\n"分隔符. 具体信息可以查看http://jsonlines.org/ 之前爬虫存储数据,使用了这个格式文件,但是在读取的时候,Python内置的json函数,会进行报错: 在网上找到了两个库: 1.jsonlines,文档:https://jsonlines.readthedocs.io/en/lates

如何用.net c# 读取epub格式文件

如何用.net(c#)读取epub格式文件 epub格式是印刷出版界常见的格式,本格式遵循XML原则把网页进行压缩打包. 如何用c#读取epub格式文件是个头疼的问题,本人搜遍各大网站,发现介绍都语焉不详. 因项目中要用的此功能,特做案例整理如下,仅供参考. // 动态库下载地址 https://epubreader.codeplex.com/,添加引用eBdb.EpubReader.dll // 头部增加引用 using eBdb.EpubReader; string fullfile = @

读取xml格式文件

$v = [xml]get-content d:\vmconfig.xml $v.Domain.Computer.Name vmconfig.xml内容: <?xml version="1.0" encoding="UTF-8"?><Domain><Computer><Name>stcmm-vm-s01</Name><IpAddress>192.168.0.2</IpAddress>

Python读取中文txt文件错误:UnicodeEncodeError: &#39;gbk&#39; codec can&#39;t encode character

1 with open(file,'r') as f: 2 line=f.readline() 3 i=1 4 while line: 5 line=line.decode('utf-8') 6 print str(i)+": "+line7 line=f.readline() 8 i=i+1 用以上代码读取一个包含中文的txt文件时,在正确地读取并打印了六百多行之后,print str(i)+": "+line这一行报错: UnicodeEncodeError:

matlab读取.mat格式文件

matlab读取.mat格式文件 13.1 数据基本操作 本节介绍基本的数据操作,包括工作区的保存.导入和文件打开.13.1.1 文件的存储 MATLAB支持工作区的保存.用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时再次导入.保存工作区可以通过菜单进行,也可以通过命令窗口进行. 1. 保存整个工作区 选择File菜单中的Save Workspace As…命令,或者单击工作区浏览器工具栏中的Save,可以将工作区中的变量保存为MAT文件. 2. 保存工作区中的变量 在工作区浏览

读取siftgeo格式文件的matlab程序

% This function reads a siftgeo binary file %读取siftgeo格式的二进制文件 % % Usage: [v, meta] = siftgeo_read (filename, maxdes) % filename the input filename % maxdes maximum number of descriptors to be loaded 要加载的描述子最大数量 % (default=unlimited)%默认无限制 % % Return

Python读取和处理文件后缀为&quot;.sqlite&quot;的数据文件

最近在弄一个项目分析的时候,看到有一个后缀为”.sqlite”的数据文件,由于以前没怎么接触过,就想着怎么用python来打开并进行数据分析与处理,于是稍微研究了一下. SQLite是一款非常流行的关系型数据库,由于它非常轻盈,因此被大量应用程序采用. 像csv文件一样,SQLite可以将数据存储于单个数据文件,以便方便的分享给其他人员.许多编程语言都支持SQLite数据的处理,python语言也不例外. sqlite3是python的一个标准库,可以用于处理SQLite数据库. 用sqlite

python——读取MATLAB数据文件 *.mat

鉴于以后的目标主要是利用现有的Matlab数据(.mat或者.txt),主要考虑python导入Matlab数据的问题.以下代码可以解决python读取.mat文件的问题.主要使用sicpy.io即可.sicpy.io提供了两个函数loadmat和savemat,非常方便. # adapted from http://blog.csdn.net/rumswell/article/details/8545087 import scipy.io as sio #import matplotlib.p

SHELL读取 ini 格式文件做配置文件

ini文件格式一般都是由节.键.值三部分组成 格式: [第一节 ] 第一个键 = 值 第二个键 = 第二个值 [第二节 ] 第一个键 = val1,val2,val3 例子: [COM] KINGGOO = kinggoo.com 其实这个作用没那么特别大,但多个shell如果每个配置信息都在shell文件里面写,懂的人还好,半懂+不仔细的人要如何改,改几个地方估 计脚本就不能运行了.所以这样单独哪出来比较好些,而且可以多个shell使用一个ini文件(与扩展名无关)来做配置也可以的.只需要在s