Writing list of basic variables to text file

2019-08-10 23:04发布

问题:

I want to write a text file that has some lines in the following format:

result: variable1 +/- error1
result: variable2 +/- error2

And so on... So far I have:

f = open('file_{a}.txt'.format(a=some_name), 'w')
for i in range(len(variable)):
    f.write('result: ', variable[i], '+/-', error[i], '\n')

Variable and error are floats, and some_name is a string.

But I'm getting an error:

TypeError: expected a string or other character buffer object

I guess I need to format the f.write line differently but I can't figure out how. The file only needs to be read by humans, so that actual format can change.

Thanks!

回答1:

If the problem is not the type of variable[i] or error[i],try this:

f = open('file_{a}.txt'.format(a=some_name), 'w')
for i in range(len(variable)):
   f.write('result: {0} +/- {1}\n'.format(variable[i],error[i]))


回答2:

From the documentation:

f.write(string)

writes the contents of string to the file, returning the number of characters written.

So you can't pass in any number of strings separated by commas as arguments. This is different to the way print() works which excepts any number of arguments and formats them for you...

So that is why you are getting the error:

TypeError: expected a string or other character buffer object

How to fix it:

Fixing it is really easy, if you are sure variable[i] and error[i] are strings, you can either:

format them with .format:

f.write('result: {} +/- {}\n'.format(variable[i], error[i]))

or concatenate them with the + operand:

f.write('result: ' + variable[i] + ' +/- ' + error[i] + '\n')

Hope this helps!