用python将迭代输出写入文件
我试图将print语句的输出写入一个输出文件,而不是在控制台上打印它们。有什么简单的方法可以做到这一点而不影响我在print语句中编写的代码吗 代码:-用python将迭代输出写入文件,python,python-3.x,if-statement,Python,Python 3.x,If Statement,我试图将print语句的输出写入一个输出文件,而不是在控制台上打印它们。有什么简单的方法可以做到这一点而不影响我在print语句中编写的代码吗 代码:- outputfile = open('output1.txt','w') outputfile.write("Order_id Order_date User_id Avg_Item_Price Start_page_url Error_msg") for i in inputm[1:]:
outputfile = open('output1.txt','w')
outputfile.write("Order_id Order_date User_id Avg_Item_Price Start_page_url Error_msg")
for i in inputm[1:]:
if '::' in i[0] or ':' not in i[0]:
print('\n',"This is not a valid order record.")
else:
print('\n',i[0].split(':')[0]
,str(datetime.strptime(i[0].split(':')[1],'%Y%m%d'))[:10]
,i[1]
,round(sum( float(v) if v else 0.0 for v in i[2:6])/4,2)
,i[6] if Counter(i[6][0:23]) == Counter("http://www.google.com") else ' '
,'Valid URL' if Counter(i[6][0:23]) == Counter("http://www.google.com") else 'Invalid URL'
)
outputfile.close()
在写入文件之前,您需要格式化字符串
print('\n,',"This is not a valid order record.")
到
就是
outputfile = open('output1.txt','w')
outputfile.write("Order_id Order_date User_id Avg_Item_Price Start_page_url Error_msg")
for i in inputm[1:]:
if '::' in i[0] or ':' not in i[0]:
outputfile.write('\n %s'%("This is not a valid order record."))
else:
outputfile.write('\n%s %s %s %f %s %s'%(i[0].split(':')[0]
,str(datetime.strptime(i[0].split(':')[1],'%Y%m%d'))[:10]
,str(i[1])
,round(sum( float(v) if v else 0.0 for v in i[2:6])/4,2)
,i[6] if Counter(i[6][0:23]) == Counter("http://www.google.com") else ' '
,'Valid URL' if Counter(i[6][0:23]) == Counter("http://www.google.com") else 'Invalid URL'))
outputfile.close()
如果不想更改任何代码,可以将打印函数改为附加到文件:
def print(*args):
with open("output1.txt", "a") as outputfile:
outputfile.write(" ".join(str(arg) for arg in args) + "\n")
但最好创建一个新函数,如下所示:
def write_to_file(*args):
with open("output1.txt", "a") as outputfile:
outputfile.write(" ".join(str(arg) for arg in args) + "\n")
write_to_file("Order_id Order_date User_id Avg_Item_Price Start_page_url Error_msg")
for i in inputm[1:]:
if '::' in i[0] or ':' not in i[0]:
write_to_file('\n',"This is not a valid order record.")
else:
write_to_file('\n',i[0].split(':')[0]
,str(datetime.strptime(i[0].split(':')[1],'%Y%m%d'))[:10]
,i[1]
,round(sum( float(v) if v else 0.0 for v in i[2:6])/4,2)
,i[6] if Counter(i[6][0:23]) == Counter("http://www.google.com") else ' '
,'Valid URL' if Counter(i[6][0:23]) == Counter("http://www.google.com") else 'Invalid URL'
)
outputfile.close()
只需将
print()
更改为outputfile.write()
不起作用?不起作用。。。。因为在打印中使用的内部函数似乎是特定于打印的。。。
def write_to_file(*args):
with open("output1.txt", "a") as outputfile:
outputfile.write(" ".join(str(arg) for arg in args) + "\n")
write_to_file("Order_id Order_date User_id Avg_Item_Price Start_page_url Error_msg")
for i in inputm[1:]:
if '::' in i[0] or ':' not in i[0]:
write_to_file('\n',"This is not a valid order record.")
else:
write_to_file('\n',i[0].split(':')[0]
,str(datetime.strptime(i[0].split(':')[1],'%Y%m%d'))[:10]
,i[1]
,round(sum( float(v) if v else 0.0 for v in i[2:6])/4,2)
,i[6] if Counter(i[6][0:23]) == Counter("http://www.google.com") else ' '
,'Valid URL' if Counter(i[6][0:23]) == Counter("http://www.google.com") else 'Invalid URL'
)
outputfile.close()