Python文本文件布局

时间:2017-03-17 20:07:30

标签: python python-3.x text-files

我希望能够以良好的设置布局读取和写入文本文件。

这是我到目前为止对文件进行读写的内容。非常基本,但完美的工作。

写文件:

def writefile():
    file = open("database.txt","w") 
    file.write("Testing.. Testing.. 123.") 
    file.close()
    print("Written on file [database.txt] successful")

阅读文件:

def readfile():
    file = open("database.txt","r") 
    print(file.read())
    file.close()

但是,我需要它,以便我可以在一个文件中正确处理ID和TEAMNAME。 我需要这个布局或类似的。

这个布局在一个名为database.txt

的文本文件中
TEAMNAME: MISFITS, ID: 250
TEAMNAME: BLUES, ID: 170
TEAMNAME: EAZY, ID: 154
TEAMNAME: SUPER, ID: 124

程序必须能够在此布局中书写并读取此布局。

提前感谢您的帮助! :)

2 个答案:

答案 0 :(得分:0)

您想要的是简单的.ini文件或正确的数据库文件。

.ini文件可能如下所示:

[Team1]
name=x
foo=1
bar=2

[Team2]
...

.ini文件可以使用configparser模块在Python中读取:

>>> import configparser
>>> config = configparser.ConfigParser()
>>> config.sections()
[]
>>> config.read('example.ini')
['example.ini']
>>> config.sections()
['bitbucket.org', 'topsecret.server.com']
>>> 'bitbucket.org' in config
True
>>> 'bytebong.com' in config
False
>>> config['bitbucket.org']['User']
'hg'
>>> config['DEFAULT']['Compression']
'yes'
>>> topsecret = config['topsecret.server.com']
>>> topsecret['ForwardX11']
'no'
>>> topsecret['Port']
'50022'
>>> for key in config['bitbucket.org']: print(key)
...

在此处阅读更多内容:https://docs.python.org/3/library/configparser.html

有关数据库文件以及如何在Python中使用它们的更多信息:https://docs.python.org/3/library/sqlite3.html

答案 1 :(得分:0)

要读入已发布的布局,可以逐行读取文件,然后用逗号分隔每一行。然后可以将此信息存储在字典中。

def readfile():
    datalist = []       #create a list to store the dictionaries in

    file = open('database.txt', 'r')
    lines = file.read().split('\n')      #this creates a list containing each line

    for entry in lines:             #scan over all of the lines
        parts = entry.split(',')    #split it at the comma
        dictionary = dict()
        for part in parts:
           dictionary[part.split(':')[0].strip()] = part.split(':')[1].strip()

        datalist.append(dictionary)

    file.close()
    return datalist

datalist是包含字典的列表,其中包含信息。它可以像这样使用:

for item in datalist:
    print('Team Name:', item['TEAMNAME'])
    print('Id:', item['ID'])

要回写文件,您可以使用:

def writefile(datalist):
    file = open('database.txt', 'w')
    for entry in datalist:
        output = ''
        for key in entry.keys():
            output += key
            output += ': '
            output += entry[key]
            output += ', '

        file.write(output[:-2] + '\n')      #get rid of the trailing comma
    file.close()

您可以在列表中添加新条目,如下所示:

data = readfile()     #get the data
data.append({'TEAMNAME': 'COOL', 'ID': '444'})
writefile(data)       #update the file