开发者

Python - Writing to a text file using functions?

开发者 https://www.devze.com 2023-01-11 17:05 出处:网络
i wrote a simple function to write into a text file. like this, def write_func(var): var = str(var) myfile.write(var)

i wrote a simple function to write into a text file. like this,

def write_func(var):
        var = str(var)
        myfile.write(var)
a= 5
b= 5
c= a + b
write_func(c)

this will write the output to a desired file. now, i want the output in another format. say,

write_func("Output is :"+c)

so that the output will have a meaningfu开发者_运维技巧l name in the file. how do i do it? and why is that i cant write an integer to a file? i do, int = str(int) before writing to a file?


You can't add/concatenate a string and integer directly.

If you do anything more complicated than "string :"+str(number), I would strongly recommend using string formatting:

write_func('Output is: %i' % (c))


Python is a strongly typed language. This means, among other things, that you cannot concatenate a string and an integer. Therefore you'll have to convert the integer to string before concatenating. This can be done using a format string (as Nick T suggested) or passing the integer to the built in str function (as NullUserException suggested).


Simple, you do:

write_func('Output is' + str(c))

You have to convert c to a string before you can concatenate it with another string. Then you can also take off the:

var = str(var)

From your function.


why is that i cant write an integer to a file? i do, int = str(int) before writing to a file?

You can write binary data to a file, but byte representations of numbers aren't really human readable. -2 for example is 0xfffffffe in a 2's complement 32-bit integer. It's even worse when the number is a float: 2.1 is 0x40066666.

If you plan on having a human-readable file, you need to human-readable characters on them. In an ASCII file '0.5' isn't a number (at least not as a computer understands numbers), but instead the characters '0', '.' and '5'. And that's why you need convert your numbers to strings.


From http://docs.python.org/library/stdtypes.html#file.write

file.write(str)

Write a string to the file. There is no return value. Due to buffering, the string may not actually show up in the file until the flush() or close() method is called.

Note how documentation specifies that write's argument must be a string.

So you should create a string yourself before passing it to file.write().

0

精彩评论

暂无评论...
验证码 换一张
取 消