Python Forum
write an integer to file using a function
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
write an integer to file using a function
#1
Hello All - Python newbie here. I develop using pycharm aided by w3schools. I am playing with writing functions atm. Question is, i can't seem to write an integer to file using the code below. it works fine with writing a string to file, but not integer. Is it possible to do so, or there's some rule i'm unaware of? I posted the console output below the code as well. Thanks in advance.


#creating and using a function
z1 = open("C:\Users\Kingsley\Projects\X\wite.csv", "w")  #global variable 01 set, file create/open
v = "python is "       #global variable 02 set
x = "pretty awesome " #global variable 03 set
y = "and amazing" #global variable 04 set
print(v + x + y), "\n"

def joinFunction(): #defining a function called "joinFunction"
  x = 5             #joinFunction has a variable local to it called x. x is equal to a
  y = 6             #joinFunction has a variable local to it called y. y is equal to b
  z = x + y         #local variable z is the value of 5 + 6
  z1.write(z)#>>>>problem code here. i can't  write integer to file. Not sure why? i think it breaks the joinfunction too.
  z1.close()
joinFunction()       

print(v + x + y)       #prints the combination of the global variables defined above

#joinFunction()

The console output:

C:\Users\Kingsley\Projects\PyCharm\Second\venv\Scripts\python.exe C:/Users/Kingsley/Projects/PyCharm/Second/M2.py
python is pretty awesome and amazing

Traceback (most recent call last):
File "C:/Users/Kingsley/Projects/PyCharm/Second/M2.py", line 14, in <module>
joinFunction()
File "C:/Users/Kingsley/Projects/PyCharm/Second/M2.py", line 12, in joinFunction
z1.write(z)
TypeError: expected a string or other character buffer object

Process finished with exit code 1
Reply
#2
Can convert with str(z) or better in many cases is to use string formatting f-string.
with open('out.txt', 'w') as f:
    x = 5
    y = 6
    z = x + y
    f.write(f'Result is {z}')
Output:
Result is 11
Reply
#3
Convert to str(z) work. And pick up f-string formatting. Thanks! A follow-up then.

I call the joinfunction twice in the code below. The results seem to be written to the same line in the file. i tried putting "\n" at the end of:
z1.write(str(z)),"\n"
but it still seems to write to the same line instead of the next line. Any ideas


#creating and using a function
z1 = open("C:\Users\Kingsley\Projects\X\wite.csv", "w")  #global variable 01 set
v = "python is "       #global variable 02 set
x = "pretty awesome " #global variable 03 set
y = "and amazing" #global variable 04 set
print(v + x + y), "\n"

def joinFunction(): #defining a function called "joinFunction"
  x = 5             #joinFunction has a variable local to it called x. x is equal to a
  y = 6             #joinFunction has a variable local to it called y. y is equal to b
  z = x + y         #local variable z is the value of 5 + 6
  z1.write(str(z)), "\n"
#  z1.close()
joinFunction()

print(v + x + y)       #prints the combination of the global variables defined above

joinFunction()
Reply
#4
Use str(z) + "\n".
Here some fixes in your code,use 4-space indentation,a function should take argument,
and not getting the value for global namespace over.
Use r raw string in Path,you are using Python 2 as C:\Users will give SyntaxError in Python 3.
r"C:\Users\Kingsley\Projects\X\wite.csv"
Use Python 3,not Python 2 as is dead in under a month.
def joinFunction(z1, s):
    x = 5
    y = 6
    z = x + y
    z1.write(str(z) + "\n" + s)
    z1.close()

z1 = open("wite.csv", "w")
v = "python is "
x = "pretty awesome "
y = "and amazing"
s = v + x + y
joinFunction(z1, s)
Output:
11 python is pretty awesome and amazing
With f-string can just put in \n.
with open('out.txt', 'w') as f:
    x = 5
    y = 6
    z = x + y
    c = x ** y
    f.write(f'Result is {z}\nResult is {c}')
Output:
Result is 11 Result is 15625
Reply
#5
That works. And thanks for the feedback on best practices too. These hints really helps with the learning process.

To your point, I do code with Python 2 on Windows, but also run Python 3 on CentOS so i'll probably start coding with the raw string in path as suggested going forward. Thx again.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  How do I write a single 8-bit byte to a file? MysticLord 2 246 Sep-03-2020, 12:27 PM
Last Post: MysticLord
  unable to write to log file Mekala 2 273 Aug-12-2020, 11:02 PM
Last Post: Mekala
  List Won't Write in Text File IILawrenceII 4 362 Jul-17-2020, 11:16 PM
Last Post: j.crater
  Process Data from one csv file and write to another CSV file specific column ajin9581 1 324 Jun-17-2020, 06:00 PM
Last Post: buran
  Write SQLite query result to file hjk6734 1 312 May-27-2020, 12:17 PM
Last Post: menator01
  Append JSON's and write to file faqsap 4 495 May-15-2020, 04:20 PM
Last Post: faqsap
  Print/write to file function tpolim008 4 503 Apr-01-2020, 07:59 PM
Last Post: tpolim008
  Write object to file medatib531 7 548 Apr-01-2020, 06:25 PM
Last Post: BrendanD
  Replace XML tag and write to the same file krish216 4 573 Mar-26-2020, 07:39 AM
Last Post: snippsat
  can we write command output to new csv file using Panda package? PythonBeginner_2020 3 557 Mar-13-2020, 12:38 PM
Last Post: ndc85430

Forum Jump:

User Panel Messages

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