question

Upvotes
Accepted
1 0 1 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 512.0 KiB each and 1.0 MiB total.

Thank you for your participation in the forum.

Is the reply below satisfactory in answering your question?

If yes please click the 'Accept' text next to the reply.

This will guide all community members who have a similar question.

Otherwise please post again offering further insight into your question.

Thanks,

AHS

@bouznari.kenza

Hi,

Please be informed that a reply has been verified as correct in answering the question, and marked as such.

Thanks,

AHS

1 Answer

· Write an Answer
Upvotes
Accepted
39.4k 77 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 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

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