python-3.xtabular-form

print results to text file in tabular form


I am currently printing onto console, can I print the output onto a text file in tabular form?

I am trying to write the file with:

with open("increment.txt", "w") as file:
    file.write(i, mol)
    file.close()

Here is the program:

import numpy as np

    i: int
    for i in range(1, 100,5):
        mol = int((i*5)/(i+2))

        print('i & mol are:',i, mol)


    with open("incre.txt", "w") as file:
        file.write(i, mol)
        file.close()

Error message.. file.write(i, mol)

TypeError: write() argument must be str, not tuple


Solution

  • You are defining mol inside of your loop; here is the corrected code as far as I understand your question:

        with open("incre.txt", "w") as file:
            for i in range(1, 100, 5):
                mol = int((i * 5) / (i + 2))
                file.write(str(i) + " " + str(mol))
            file.close()
    

    This will write your i variable separated by a space, then your mol variable. Note since you haven't specified an output directory, it will create the file wherever your python script is stored.

    Here is a more pythonic approach:

    def write_example(output_path):
        with open(output_path, "w") as file:
            for i in range(1, 100, 5):
                mol = int((i * 5) / (i + 2))
                file.write(str(i) + " " + str(mol) + "\n")
            file.close()
    
    
    outpath = "/home/some_path_here/test.txt"
    write_example(outpath)
    

    This produces a txt file with the following contents:

    1 1 6 3 11 4 16 4 21 4 26 4 31 4 36 4 41 4 46 4 51 4 56 4 61 4 66 4 71 4 76 4 81 4 86 4 91 4 96 4

    Each of these being on a new line.

    Let me know if this helped! Cheers!