Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python将迭代输出写入文件_Python_Python 3.x_If Statement - Fatal编程技术网

用python将迭代输出写入文件

用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:]:

我试图将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:]:    
     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()