[英]writing multiple returns to a file in python
我需要將每個函數的返回結果寫入文本文件。 我用下面的代碼。 但是,當我有多個功能時,使用file1.write()的過程將花費大量時間和行。 有沒有更聰明的方法來寫輸出?
def function1():
#some operation
return "Status 1" + "\n\n"
def function2():
#some operation
return "Status 2" + "\n\n"
def function3():
#some operation
return "Status 1" + "\n\n"
if __name__ == '__main__':
file1 = open("test.txt","w")
output1 = function1()
file1.write(output1)
output2 = function2()
file1.write(output2)
output3 = function3()
file1.write(output3)
file1.close()
我修改了代碼,因為許多人對我的問題感到困惑。
此代碼可以通過更換所有變短(以及可能的更清楚)所示if
由:
with open("text.txt","w") as file1:
for func in (addition, subtraction, multiplication):
file1.write(func(5,6))
但這不會縮短執行時間。
看來您正努力避免重復太多。 您可以利用以下事實:函數是“一流的對象”,以便對其進行迭代。 另外,您可以利用functools
模塊的功能來重用幾乎相同功能的基本結構。 以下代碼將以更少的重復代碼產生與您的示例相同的輸出:
import functools
def base_func(func_id):
return 'status of {}\n\n'.format(func_id)
functions = [functools.partial(base_func, i+1) for i in range(3)]
if __name__ == '__main__':
with open('test.txt','w') as file1:
for func in functions:
file1.write(func())
但是,幾乎可以肯定它不會以更快的速度運行,但是考慮到您的示例,我幾乎不會擔心計算性能。
我遇到的最快的文本編寫器是Pandas,我通常將其與NumPy一起使用。 所以看起來像這樣:
import pandas as pd
import numpy as np
a=np.zeros(len(results)) #if you know the result size
#now store all your results in a
a[0]=add(5,6)
a[1]=sub(5,6)
a[2]=multiply(5,6)
#continue
b=pd.DataFrame(a)
b.to_csv('test.csv', header=False, index=False, sep=',')
希望您能想到-sep可以是任何分隔符。 如果需要多維數組,也可以這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.