question

Upvotes
Accepted
1 0 0 1

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.


pythonalphapandas
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

1 Answer

Upvotes
Accepted
39.2k 75 11 27

@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
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Click below to post an Idea Post Idea