2017-06-26 178 views
-2

我想打印一些字符串和數字值到一個txt文件。輸出是這樣的:python:將字符串和數字保存到一個txt文件

Accuracy: 0.98 
Loss: 0.10 

我的代碼如下:

output_file = open('filepath','w') 
output_file.write('Accuracy:\n',0.98) 
output_file.write('Loss:\n',0.10) 
output_file.close() 

但他們不會因寫入功能工作的「類型錯誤:功能恰恰1個參數(2給出)」

+2

請看一看[字符串格式化](https://docs.python.org/3.4/library /functions.html#format)。 – ForceBru

回答

1

您不能將多個字符串傳遞給寫入函數。嘗試鑄造浮游物字符串和concatinating:

output_file = open('filepath','w') 
output_file.write('Accuracy:\n'+str(0.98)) 
output_file.write('Loss:\n'+str(0.10)) 

output_file.close() 
0

我錯了!我忘了添加%標識符來識別數字。這些代碼應該是:

output_file = open('filepath.txt','w') 
output_file.write('Accuracy: %1.2f\n' % (0.98,)) 
output_file.write('Loss: %1.2f\n' % (0.10,)) 
output_file.close() 
1

而其他的答案是正確的,它能夠更好利用with打開file

with open('file', 'w') as output_file: 
    output_file.write('foo') 
    output_file.write('bar') 

這樣的file將自動關閉,當書寫完成。

0

在Python中編寫文本輸出代碼的最簡單方法可能是使用print函數。 (這是在Python 3的功能,但在Python 2.語句)

print('Accuracy:', 0.98, file=output_file) 
print('Loss:', 0.10, file=output_file) 

Python的當量是:

print >>output_file, 'Accuracy:', 0.98 
print >>output_file, 'Loss:', 0.10 

你仍然有同樣的開/關的要求。其優點是,將文本寫入標準輸出設備的所有知識均可用於寫入文本文件。

一個額外的功能是,如果output_file值爲None,那麼任一版本都會寫入標準輸出流(控制檯/終端如果沒有重定向),因此您可以非常簡單地定義將寫入文件或控制檯的函數,如:

def show_stats(accuracy, loss, file=None): 
'''display accuracy and loss on console, or specified file''' 
    print('Accuracy:', accuracy, file=file) 
    print('Loss:', loss, file=file) 

然後,調用與任一或兩者:

show_stats(0.98, 0.10) # output to stdout 
show_stats(0.98, 0.10, file=output_file) # output to text file 
相關問題