Running a code multiple times and saving data after every run in Python

Question:

I am running this code 10 times. After every run, I want to create a folder n where n is the number of the run and save the data with file name Inv_Radius_220_47_53ND.csv in that folder. For instance, after first run, folder 1 is created and then Inv_Radius_220_47_53ND.csv is saved. Then after second run, folder 2 is created and Inv_Radius_220_47_53ND.csv is saved in this folder. Just for info, the file name should be the same across all folders, only different folder names.

def function():
    from scipy.stats import truncnorm
    import numpy as np
    import csv 

    a, b = 47.0,53.0
    Nodes=12  #reshape into
    r = (1e-6)*np.linspace(truncnorm.ppf(0.001, a, b),truncnorm.ppf(1.0, a, b), Nodes)
    print("r =",[r])

    sort_r = np.sort(r); 
    r1=sort_r[::-1]
    print("r1 =",[r1])
    #print("r =",[r])

    r1=r1.reshape(1,Nodes)
    print("r1 shape =",[r1])

    r2 = r.copy()

   
    np.random.shuffle(r2.ravel()[1:])
    print("r2 =",[r2])    

    r2=r2.reshape(1,Nodes)
    print("r2 =",[r2])                          #actual radius values in mu(m)

    maximum = r2.max()
    indice1 = np.where(r2 == maximum)
    # minimmum = r2.min()
    # indice2 = np.where(r2 == minimum)
    r2[indice1] = r2[0][0]
    r2[0][0] = maximum
    #print(r2)
    r2[0][Nodes-1] = maximum  #+0.01*maximum
    #print(r2)
    print("r2 with max at (0,0)=",[r2])

    with open('Inv_Radius_220_47_53ND.csv', 'w+') as f: 
        inv_r=1/r2
        print("inv_r =",[inv_r])
        writer = csv.writer(f)
        writer.writerows(inv_r)
     

    mean=np.mean(r)
    print("Mean =",mean)
    var=np.var(r)
    print("var =",var)
    std=np.std(r)
    print("std =",std)

for x in range(10):
    function()
Asked By: user19862793

||

Answers:

I truncated the parts that weren’t important to the question but is this what you’re looking for?

import os
from scipy.stats import truncnorm
import numpy as np
import csv


def function(run):
    ...

    # Create the folder with the number of the run as name
    # Add 1 to run so the first run is 1 and not 0
    parent_folder = str(run + 1)
    os.mkdir(parent_folder)
    # Join the parent folder with the filepath: 0/Inv_Radius_220_47_53ND.csv
    with open(os.path.join(parent_folder, 'Inv_Radius_220_47_53ND.csv'), 'w+') as f:
        inv_r = 1 / r2
        print("inv_r =", [inv_r])
        writer = csv.writer(f)
        writer.writerows(inv_r)

    ...


for x in range(10):
    function(x)
Answered By: SitiSchu
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.