簡體   English   中英

用python將多個返回值寫入文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM