我是python的新手,我正在试图弄清楚如何将结果写入文本文件。这是我的代码:
from os import getenv
import sqlite3
conn = sqlite3.connect(getenv("APPDATA") + "\..\Local\...sanitized")
conn3 = sqlite3.connect(getenv("APPDATA") + "\..\Local\...sanitized")
conn1 = sqlite3.connect(getenv("APPDATA") + "\..\Local\...sanitized")
cursor3 = conn3.cursor()
cursor1 = conn1.cursor()
cursor = conn.cursor()
cursor.execute('SELECT ...sanitized')
for result in cursor.fetchall():
...sanitized
if password:
print "Site: " + result[0]
print 'Username: ' + result[1]
print 'Password: ' + password
print '---------------------------------------------'
cursor3.execute("...sanitized")
print("fetchall:")
result = cursor3.fetchall()
for r in result:
print(r)
cursor1.execute("...sanitized")
print("fetchall:")
result = cursor1.fetchall()
for r in result:
print(r)
我在代码的开头尝试了f = open(' output.txt')并放置了
f.write(r) # and I tried
f.write(result) # after defining it near bottom as these are my variables
f.close()# :(
追溯说它期待一个字符串?
有人可以帮忙解释一下打印的内容(这里)吗?我正在努力把握这些概念,但还没有完全明白
由于
答案 0 :(得分:5)
首先,您要确保打开文件进行编写:
f=open("output.txt","w")
然后你可以使用:
for r in result:
print >> f, r
在脚本结束时,请确保使用:
f.close()
或者,您可能需要将r
投射到字符串print >> f, str(r)
答案 1 :(得分:1)
正如其他人所提到的,您需要使用参数'w'
指定要写入文件。
最佳做法是在打开文件时使用with
。它将显着确保您的文件正确关闭,即使有例外。
with open('output.txt', 'w') as f:
for r in result:
f.write(str(r))
答案 2 :(得分:0)
似乎result
是一个列表,而write
需要一个字符串。因此,您可以尝试使用f.write(result)
或者获取与脚本完全相同的输出,而不是f.write(str(result))
:
for r in result:
f.write(r)
或者,您可以导入然后覆盖Python 3中的print
函数,以便print
的所有内容自动写入文件:
from __future__ import print_function
_print = print # reference to original print function
outfile = open("output.txt", "w") # file to write output to, mode is 'w' for writing
def print(*args, **kwargs):
"""new print function always writing to file"""
_print(*args, file=outfile, **kwargs)
print("foo")
print("bar", end=" ")
print("blub")
outfile.close()
或类似地,覆盖sys.stdout
,然后通常只使用print
:
import sys
sys.stdout = open("output.txt", "w")