Python Forum
Print/write to file function
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Print/write to file function
#1
Hello All can someone help me with the below code. Ive been working to try and get the output printed to a file with the datetime but each route Ive tried I seem to get an error can anyone point out what I am doing wrong?

#! /usr/bin/python3.6

import pymysql
import datetime
date = str(datetime.date.today()-datetime.timedelta(1))
filename = datetime.datetime.now()
print(date)
 
 
 
try:
    db_con1 = pymysql.connect(host='nhmanpncblt01.xxx.xxx.com', port=3306, user='xxx', passwd='xxx', db='photonicnetworkcaptures')
    sql_select_Query = "select * from pncnetwork where startTime regexp \'^{}\'".format(date)
    db_con2 = pymysql.connect(host='nhmanpnckey01.xxx.xxx.com', port=3306, user='xxx', passwd='xxx', db='photonicnetworkcaptures')
    sql_select_Query = "select * from pncnetwork where startTime regexp \'^{}\'".format(date)
    db_con3 = pymysql.connect(host='nhmanpncfre01.xxx.xxx.com', port=3306, user='xxx', passwd='xxx', db='photonicnetworkcaptures')
    sql_select_Query = "select * from pncnetwork where startTime regexp \'^{}\'".format(date)
    db_con4 = pymysql.connect(host='NHMANPNCNE01.xxx.xxx.com', port=3306, user='xxx', passwd='xxx', db='photonicnetworkcaptures')
    sql_select_Query = "select * from pncnetwork where startTime regexp \'^{}\'".format(date)
    cursor1 = db_con1.cursor()
    cursor2 = db_con2.cursor()
    cursor3 = db_con3.cursor()
    cursor4 = db_con4.cursor()
    cursor1.execute(sql_select_Query)
    cursor2.execute(sql_select_Query)
    cursor3.execute(sql_select_Query)
    cursor4.execute(sql_select_Query)
    records1 = cursor1.fetchall()
    records2 = cursor2.fetchall()
    records3 = cursor3.fetchall()
    records4 = cursor4.fetchall()
    sys.stdout = open(filename.strftime("%d %B %Y")+".txt", "w")

    print ("Total number of rows in pncnetwork is: ", cursor1.rowcount + cursor2.rowcount + cursor3.rowcount + cursor4.rowcount)
    print ("\nPrinting each pncnetwork record")
    for row in records1:
        print("{}, {}".format("Beltway", row[2], row[3]))
    for row in records2:
        print("{}, {}".format("Keystone", row[2], row[3]))
    for row in records3:
        print("{}, {}".format("Freedom", row[2], row[3]))
    for row in records4:
        print("{}, {}".format("New England", row[2], row[3]))


except Exception as e:
    print("ERROR ", str(e))
 
finally:
    db_con1.close()
    db_con2.close()
    db_con3.close()
    db_con4.close()

sys.stdout.close()
./pncnetworktest.py
2020-03-31
ERROR name 'sys' is not defined
Traceback (most recent call last):
File "./pncnetworktest.py", line 55, in <module>
sys.stdout.close()
NameError: name 'sys' is not defined
Reply
#2
To use sys.stdout you need to import the sys package, but you have no need to call sys.stdout.close().

Next google "Python print to file" and you will learn all about files and how you create files and write to files.

One last thing, is 2020-03-31 a valid file name on your computer? If you want to write to a file you have to give the file a name that is compatible with your operating system. Make sure to give the file and appropriate extension so you can use the file outside your program or at least provide a hint about how the file is used.
Reply
#3
(Apr-01-2020, 03:43 PM)deanhystad Wrote: To use sys.stdout you need to import the sys package, but you have no need to call sys.stdout.close().

Next google "Python print to file" and you will learn all about files and how you create files and write to files.

One last thing, is 2020-03-31 a valid file name on your computer? If you want to write to a file you have to give the file a name that is compatible with your operating system. Make sure to give the file and appropriate extension so you can use the file outside your program or at least provide a hint about how the file is used.

Yes the name is the output of the last DB backup which I am checking. The code is running on a Linux machine so I can nano and open the file. So the last statement I can remove, will this theory work for printing the screen output to a file as is like or is this a more complicated way about it? Just asking as I’m very new to this. The python class I had attended was for python 2 not three so that’s where my biggest struggle is. All the ex soles I have appear not to work in 3
Reply
#4
Ooops! I missed sys.stdout = open(filename.strftime("%d %B %Y")+".txt", "w"). Even has a file extension. Hmmm, oh well.

So what isn't working? Is the file created? Does the file contain "Total number of rows in pncnetwork is:"? What do you see after that?

If the file is not created, is it a permissions problem? Where are you trying to create the file? Or are you getting an exception. A problem with redirecting stdout to a file is this doesn't work:
except Exception as e:
    print("ERROR ", str(e))
You would need to print that to stderr. If your really want to redirect stdout I would leave out exception handling until things are working.
Reply
#5
(Apr-01-2020, 04:57 PM)deanhystad Wrote: Ooops! I missed sys.stdout = open(filename.strftime("%d %B %Y")+".txt", "w"). Even has a file extension. Hmmm, oh well.

So what isn't working? Is the file created? Does the file contain "Total number of rows in pncnetwork is:"? What do you see after that?

If the file is not created, is it a permissions problem? Where are you trying to create the file? Or are you getting an exception. A problem with redirecting stdout to a file is this doesn't work:
except Exception as e:
    print("ERROR ", str(e))
You would need to print that to stderr. If your really want to redirect stdout I would leave out exception handling until things are working.

The file gets created however the data for number of rows, and also the rows caller out in the print line are not placed in the file, it’s just blank. I’m not sure what or where I did this incorrectly
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  print doesnt work in a function ony 2 233 Mar-11-2024, 12:42 PM
Last Post: Pedroski55
  Last record in file doesn't write to newline gonksoup 3 366 Jan-22-2024, 12:56 PM
Last Post: deanhystad
  write to csv file problem jacksfrustration 11 1,375 Nov-09-2023, 01:56 PM
Last Post: deanhystad
  python Read each xlsx file and write it into csv with pipe delimiter mg24 4 1,315 Nov-09-2023, 10:56 AM
Last Post: mg24
  How do I read and write a binary file in Python? blackears 6 6,020 Jun-06-2023, 06:37 PM
Last Post: rajeshgk
  Reading data from excel file –> process it >>then write to another excel output file Jennifer_Jone 0 1,048 Mar-14-2023, 07:59 PM
Last Post: Jennifer_Jone
  Read text file, modify it then write back Pavel_47 5 1,502 Feb-18-2023, 02:49 PM
Last Post: deanhystad
  Better way to write this function SephMon 1 789 Feb-08-2023, 10:05 PM
Last Post: Gribouillis
  how to read txt file, and write into excel with multiply sheet jacklee26 14 9,525 Jan-21-2023, 06:57 AM
Last Post: jacklee26
  How to print variables in function? samuelbachorik 3 852 Dec-31-2022, 11:12 PM
Last Post: stevendaprano

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020