0

我有以下脚本,由于大家的帮助,它几乎完成了,因为它现在将结果打印到屏幕上。我还希望再添加一个步骤,该步骤将采用相同的屏幕输出并将其转储到文本文件中。

我以为这是完成的file.write()

但不知道如何让它将结果中的信息写入文件。请帮忙,我对python很陌生,所以我有点迷茫,想从书中弄清楚。

这现在打印出来,但只是查询返回的内容的最后一行。最终它可能只是打印一行然后一次又一次地覆盖它所以我需要它来打印整个 fetch all 或 results

import adodbapi

# Connect to the SQL DB    
conn = adodbapi.connect("Provider=SQLOLEDB; SERVER=xx.x.xx.x; Initial Catalog=master_db;User Id=user; Password=pass; ")
curs = conn.cursor()

# Execute SQL procedure things_referencing"    
curs.execute('util.things_procedure', )
results = curs.fetchall()

for row in results:
    print row

f = open('test.txt', 'w')
s = str(row)
f.write(s)
f.close()

conn.close()
4

2 回答 2

10

“结果”元组中的每个“行”都是一个记录元组。您希望如何格式化此数据取决于您,但在最基本的级别上,您可以将其转换为字符串str(row)

现在去阅读关于如何读写文件的python文档:http:
//docs.python.org/tutorial/inputoutput.html

更新

参考您的新代码示例,您正在执行 for 循环并打印每一行,然后您正在打开一个文件并仅写入从您的 for 循环分配的行的最后一个值。您打印的 for 循环与您随后执行的写入操作无关。row已分配 的每个值results,但您只使用了最后一个分配的值一次。

您应该首先打开文件,然后开始循环,写入行的每个值:

with open('test.txt', 'w') as f:
    for row in results:
        print row
        f.write("%s\n" % str(row))

如果您使用with上下文,它会在您离开该范围后自动为您关闭文件。str您可以使用字符串格式并添加换行符,而不是仅转换为字符串。

于 2012-04-20T17:39:53.913 回答
1

它确实是用 file.write 完成的,但你必须先打开文件。因此,您将修改 for 循环,如下所示

f = open('/path/to/file', 'w')
for row in results:
    f.write(row)
f.close()
于 2012-04-20T17:40:51.643 回答