0

So I have these functions that are meant to print/write their outputs to a text file. Now when have these functions print their output in the python shell, I get what I need. It's when I try to have those outputs written to the text file, things go awry.

Here are the functions in particular:

def printsection1(animals, station1, station2):
    for animal in animals:
        print(animal,'                 ',station1.get(animal, 0),'                   ',station2.get(animal, 0))

def printsection2(animals, station1, station2):
    for animal in animals:
        if station2.get(animal, 0)+station1.get(animal, 0) >= 4:
            print(animal)

def printsection3(animals, station1, station2):
    for animal in animals:
        print(animal,'                    ',int(station1.get(animal, 0))+int(station2.get(animal, 0)))

def printsection4(items):
    import statistics
    most_visits=[]
    for animal, date, station in items:
        most_visits.append(date[0:2]) 

    print(statistics.mode(most_visits))

The code I have in the main() function that writes to the text file looks like :

outfile.write("Number of times each animal visited each station:\n")
outfile.write("Animal ID           Station 1           Station 2 \n")
printsection1(animals, station1, station2)
outfile.write('\n')
outfile.write("============================================================ \n")

outfile.write("Animals that visited both stations at least 4 times \n")
printsection2(animals, station1, station2)
outfile.write('\n')
outfile.write("============================================================ \n")

outfile.write("Total number of visits for each animal \n")
printsection3(animals, station1, station2)
outfile.write('\n')
outfile.write("============================================================ \n")

outfile.write("Month that has the highest number of visits to the stations \n")
printsection4(items)

Is there a simple way to have the outputs of the functions written to a text file? I've seen the ">>" operator floating around but I can't seem to get it to work. If more information is required, I can provide it.

Thanks again!

0

2 Answers 2

2

You need to change the calls to print in the functions to outfile.write as well, or use the print(..., file=outfile) syntax.

Alternatively, you can make the standard output point to outfile using an assignment sys.stdout = outfile. That will cause all subsequent calls to print to write to outfile.

Sign up to request clarification or add additional context in comments.

Comments

1

in python 3 you can redirect the output of print function to a file with file keyword :

with open('somefile.txt', 'rt') as f:
  print('Hello World!', file=f)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.