如何将数据以表格形式写入文件

1 投票
3 回答
3521 浏览
提问于 2025-04-17 21:16

我正在使用Python 2.7,我想把数据写入一个文件,格式是表格。这个表格有三列。而且这个文件会被不同的应用程序访问,所以它会一直保留在系统里。

我需要同时读取和写入数据。因此,数据应该像SQL数据库那样容易访问。

3 个回答

0

写入数据

myList = [['1', '2', '3'], ['4', '5', '6']]
with open('/home/XXXX/whatever.txt', 'w') as file:
    for row in myList:
        file.write(';'.join(row))
        file.write('\n')

读取数据

myList2 = list()
with open('/home/XXXX/whatever.txt', 'r') as file:
    for row in file.read().splitlines():
        myList2.append(row.split(';'))
1

csv模块是用来处理表格数据的,特别是CSV格式的数据。简单来说,它让程序员可以很方便地说:“把这些数据写成Excel喜欢的格式”或者“从这个Excel生成的文件里读取数据”,而不需要了解Excel具体使用的CSV格式的细节。程序员还可以描述其他应用程序能理解的CSV格式,或者定义自己特定用途的CSV格式。

csv模块里的读取器和写入器可以处理数据序列。程序员也可以使用DictReader和DictWriter类以字典的形式来读取和写入数据。

4

使用SQLite

sqlite3模块可以把SQL表格存储在一个文件里,不像mySQL那样需要一个网络服务器来访问。

写入数据

c = conn.cursor()

# Create table
c.execute('''CREATE TABLE stocks
             (date text, trans text, symbol text, qty real, price real)''')

# Insert a row of data
c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")

# Save (commit) the changes
conn.commit()

如果你想修改或删除数据,可以使用一些常见的SQL语句,比如 UPDATE(更新)、SET(设置)和 DELETE(删除)。

读取数据

t = ('RHAT',)
c.execute('SELECT * FROM stocks WHERE symbol=?', t)
print c.fetchone()

关闭连接

# We can also close the connection if we are done with it.
# Just be sure any changes have been committed or they will be lost.
conn.close()

使用CSV

csv模块让你可以读取和写入列表和表格。这是一种标准格式,几乎所有的电子表格软件和编程语言都支持。

写入数据

import csv

with open('eggs.csv', 'wb') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])

结果是:

Spam Spam Spam Spam Spam |Baked Beans|

Spam |Lovely Spam| |Wonderful Spam|

加载数据

import csv

with open('eggs.csv', 'rb') as csvfile:
spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
for row in spamreader:
    print ', '.join(row)

打印结果是:

Spam, Spam, Spam, Spam, Spam, Baked Beans

Spam, Lovely Spam, Wonderful Spam

撰写回答