What is the correct format to write float value to file in Python

python write float array to file
python write multiple variables to file
python write list of integers to file
python write variable to file
write float to file c
write to file python
write array to file python
python format

I have a bunch of float values, for example:

x1 = 1.11111111

x2 = 2.22222222

I want to write these values to a file:

f = open("a.dat", "w+")
f.write("This is x1: ",x1)
f.write("\n")              #I want to separate the 2 lines
f.write("This is x2: ",x2)

At this point I got an error on the second line:

write() takes exactly one argument (2 given)

How do I write to file such that when I open it, I see this format:

This is x1: 1,1111111
This is x2: 2,2222222

And yes, the file has to be ***.dat

It's not .txt

the way you are writing to the file looks like you are giving two arguments to write function. So you need to only pass one argument. try converting x1 and x2 into string and then write to the file.

f.write("This is x1 " + str(x1))
f.write("This is x2 " + str(x2))

How to write integer values to a file in Python, How do you write numbers in a file in Python? And the float() function successfully returned the correct float values for each of them. Also, it ignored the leading and trailing spaces as given in the last element of the list. Python float() function also accepts words like NaN, Infinity, inf (in lower and upper cases). Let’s check this fact with an example.

The write function takes a single string. You're trying to use it like print, which takes any number of arguments.


You can, in fact, just use print. Its output only goes to your program's output (stdout) by default, by passing it a file argument, you can send it to a text file instead:

print("This is x1: ", x1, file=f)

If you want to use write, you need to format your output into a single string. The easiest way to do that is to use f-strings:

f.write(f"This is x1: {x1}\n")

Notice that I had to include a \n on the end. The print function adds its end parameter to the end of what it prints, which defaults to \n. The write method does not.


Both for backward compatibility and because occasionally they're more convenient, Python has other ways of doing the same thing, including explicit string formatting:

f.write("This is x1: {}\n".format(x1))

printf-style formatting:

f.write("This is x1: %s\n" % (x1,))

template strings:

f.write(string.Template("This is $x1\n").substitute(x1=x1))

… and string concatenation:

f.write("This is x1: " + str(x1) + "\n")

All but the last of these automatically converts x1 to a string in the same way as str(x1), but also allows other options, like:

f.write(f"This is {x1:.8f}\n")

This converts x1 to a float, then formats it with 8-decimal precision. So, in addition to printing out 1.11111111 and 2.22222222 with 8 decimals, it'll also print 1.1 as 1.10000000 and 1.23456789012345 as 1.23456789.

The same format strings work for f-strings, str.format, and the format functions:

print("This is x1: ", format(x1, '.8f'), file=f)
f.write("This is x1: {:.8f}\n".format(x1))
f.write("This is x1: " + format(x1, '.8f') + "\n")

… and the other two methods have similar, but not quite as powerful, formatting languages of their own:

f.write("This is x1: %.8f\n" % (x1,))

What's the difference between %s and %d in Python string formatting?, How do you write a variable value to a file in python? The float () method is used to return a floating point number from a number or a string. The method only accepts one parameter and that is also optional to use. Let us look at the various types of argument, the method accepts: A number : Can be an Integer or a floating point number. Must contain numbers of any type.

f.write('This is x1: %f'%x1)
f.write('This is x2: %f'%x2) 

Write float arrays to a text file, years old' % ('Joe', 42)) Would output Joe is 42 years old. Assuming there's one float per line: If you want more control with formatting, use the format method of string. For instance, this will only print 3 digits after each period: The "float()" function accepts strings as input and converts them into floats.

First have a look at the below code sample. I have used repetition operator * to repeat strings 2 times which can used to generate a multiline string in single statement(in case, if you have a set of variables).

x1 = 1.11111111
x2 = 2.22222222

lines = "This is x%s: %s\n"*2 % (1, x1, 2, x2)
print(lines)

» Output

This is x1: 1.11111111
This is x2: 2.22222222

Finally you can use the below 3 lines of code to accomplish your goal.

x1, x2 = 1.11111111, 2.22222222
with open("a.dat", "w+") as f:
    f.write("This is x%s: %s\n"*2 % (1, x1, 2, x2));

Do not need to close file. It will be closed automatically once program control comes out from with statement's block.

Writing files in Python, The first column of the file contains values from an 'x'-array with a given 43 PL/I; 44 PowerShell; 45 PureBasic; 46 Python; 47 R; 48 Racket; 49 Raku ASCII_Template or some such instead of that ugly hand-formatting. The writer.writerow() takes a sequence (a list or tuple), but you are passing in a string instead. By passing in a string, writer.writerow() still treats it as as sequence, and each individual character becomes a column value:

Writing numbers into a file, The most basic way to write files in Python is to simply open a file with write The best way to write out variables with this technique is to use string formatting is a string containing the format statements and variables is a tuple of the values,  To round the float value to 2 decimal places, you have to use the Python round(). The round function is the common function to use and requires only two arguments. If you want to round to 2 decimal places, you have to pass 2 as the value of the second argument.

Python Tutorial: Formatted Output, number = float(number) # convert from string to number open('odd.txt', 'w') # writes odd numbers into a file odd_number.write(number + Above, we made sure the user enters a correct path and after this check, an integer'.format(line)) continue print('The count of the negative numbers is: Use better variable names. max_width = max(len(filename) for filename in filenames) for filename in filenames: f.write(filename.ljust(max_width+1)+..whatever else..) If you can't get a list of all filenames first, then there's no way to make sure that everything will line up, because there's no way to know if you'll later get a file whose name is really long.

Class 3: Reading and writing data, formatted output in three ways: the string methods ljust, rjust, center, format or We can change the default value to an arbitrary string, if we assign this string to But it can also be used, for example, to create the right format to put the data into a database. The second one "%8.2f" is a format description for a float number. It is important not to represent currency in float. Floats are not precise. But penny or cent amounts are integers. Therefore integers are the correct way of representing currency. – Davoud Taghawi-Nejad Jul 15 '12 at 22:44. @DavoudTaghawi-Nejad or more to the point The Decimal Type – Basic Apr 8 '13 at 11:01.

Comments
  • Shouldn't it be f.write("\n")? With quotes.
  • oh yes, I fixed that too. But the program still won't compile, as its stop right at the 2nd line
  • write doesn't behave like print, it will only take a single argument, you are passing more than one. The error is pretty self-explanatory here.
  • @user3483203 that explains it. Can you post a comment with links that help me formatting it? So I can pick your comment as an answer and close this thread.
  • @AdrianTran Note that this code writes everything on one line. And using str to convert floats doesn't give you any format control, you just get the default number of decimal places.
  • I'm afraid I haven't learn anything about stdout yet. I'll try write this down and use it next time.
  • @AdrianTran stdout is just the name for the special file that represents your program's output. You don't hav to worry about what it means; just that you can use a normal file that you got back from open with the print function.
  • @AdrianTran stdout is just the place where normal print output goes. That usually means your terminal (console) window.
  • tks! btw can you find any website that can show me how to format correctly when write to file?