Python将结果写入fi

2024-06-17 11:05:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我以为这是用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()

Tags: 脚本closesql屏幕步骤connresultswrite
2条回答

确实已经完成了file.write,但必须先打开该文件。所以您可以修改for循环如下

f = open('/path/to/file', 'w')
for row in results:
    f.write(row)
f.close()

“results”元组中的每个“row”都是一个记录元组。如何格式化这些数据取决于您,但在最基本的级别上,您可以使用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转换为字符串。

相关问题 更多 >