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("<path>\file.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:\<path>\python.exe C:/<path>/test01.py
python is pretty awesome and amazing

Traceback (most recent call last):
File "C:/<path>/test01.py", line 14, in <module>
joinFunction()
File "C:/<path>/test01.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("<path>\file.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()
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
  Last record in file doesn't write to newline gonksoup 3 364 Jan-22-2024, 12:56 PM
Last Post: deanhystad
  write to csv file problem jacksfrustration 11 1,371 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,308 Nov-09-2023, 10:56 AM
Last Post: mg24
  How do I read and write a binary file in Python? blackears 6 6,011 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,046 Mar-14-2023, 07:59 PM
Last Post: Jennifer_Jone
  Read text file, modify it then write back Pavel_47 5 1,500 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,513 Jan-21-2023, 06:57 AM
Last Post: jacklee26
  How to write in text file - indented block Joni_Engr 4 6,362 Jul-18-2022, 09:09 AM
Last Post: Hathemand
  Upgrading from 2 to 3 and having file write problems KenHorse 2 1,430 May-08-2022, 09:47 PM
Last Post: KenHorse

Forum Jump:

User Panel Messages

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