How to write the number of lines of an output in it's first line?

I am trying to add a line with the number of lines in the outputs I am generating with a loop for.

import os.path
import meshio
import pandas as pd
import numpy as np
import csv

cnt = 0
for file in os.listdir():
if file.endswith(".vtu"):
mesh = meshio.read(file)
Sn = mesh.point_data['Sn']
coordinates = mesh.points
data = np.zeros((len(coordinates), 4))
data[:, :3] = coordinates
data[:, 3:4] = Sn
dataframe = pd.DataFrame(data, columns=['X', 'Y', 'Z', 'Sn'], dtype=float)
dataframe["ID"] = dataframe.index
del Sn, mesh, data, coordinates

####### Gas Saturation #####
gas_saturation = dataframe[dataframe['Sn'] > 0]
del gas_saturation['X']
del gas_saturation['Y']
del gas_saturation['Z']
gas_saturation.name = 'Sn'

n = gas_saturation['Sn'].count()

gas_saturation.to_csv(f'D:/Bionapl_Nicolas/testKB/vtu_files/output_Sn/Sat_t{
cnt}.csv', sep=" ",index = False, header = False)
cnt += 1

The variable n gives the number of lines I am interested in, but I don't know how can I add n before the first line of the outputs.

If anyone has any other suggestions to make that happen or optimize the code above, plz tell me.


Tagged:

Best Answer

  • @bouznari.kenza

    This forum is dedicated to software developers utilizing Refinitiv APIs. Your question is about general programming in Python. It is off topic on this forum. In the future I suggest you post your question on appropriate thematic forums. E.g. this specific question would be better destined for Stackoverflow.

    Nevertheless, if I understand correctly, you're looking to have the value of the variable named n as the first line in the CSV file you're creating at each iteration in the for loop that goes through the list of files with .vtu extension in a specific directory. Here's one way of achieving this:

    n = gas_saturation['Sn'].count()

    csv = gas_saturation.to_csv(sep=" ",index = False, header = False)
    filename = f'D:/Bionapl_Nicolas/testKB/vtu_files/output_Sn/Sat_t{
    cnt}.csv'
    with open(filename, 'w') as f:
    f.write(str(n) + '\n')
    f.write(csv)
    cnt += 1