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 to write a code with İF function? Aycaaxx 1 107 Nov-03-2020, 05:46 AM
Last Post: deanhystad
  How do I write a single 8-bit byte to a file? MysticLord 2 298 Sep-03-2020, 12:27 PM
Last Post: MysticLord
  unable to write to log file Mekala 2 321 Aug-12-2020, 11:02 PM
Last Post: Mekala
  List Won't Write in Text File IILawrenceII 4 398 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 371 Jun-17-2020, 06:00 PM
Last Post: buran
  Write SQLite query result to file hjk6734 1 349 May-27-2020, 12:17 PM
Last Post: menator01
  Append JSON's and write to file faqsap 4 561 May-15-2020, 04:20 PM
Last Post: faqsap
  Print/write to file function tpolim008 4 548 Apr-01-2020, 07:59 PM
Last Post: tpolim008
  Write object to file medatib531 7 611 Apr-01-2020, 06:25 PM
Last Post: BrendanD
  Replace XML tag and write to the same file krish216 4 615 Mar-26-2020, 07:39 AM
Last Post: snippsat

Forum Jump:

User Panel Messages

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