I’m using Python to open a text document:
text_file = open("Output.txt", "w")
text_file.write("Purchase Amount: " 'TotalAmount')
text_file.close()
I want to substitute the value of a string variable TotalAmount into the text document. Can someone please let me know how to do this?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
It is strongly advised to use a context manager. As an advantage, it is made sure the file is always closed, no matter what:
with open("Output.txt", "w") as text_file:
text_file.write("Purchase Amount: %s" % TotalAmount)
This is the explicit version (but always remember, the context manager version from above should be preferred):
text_file = open("Output.txt", "w")
text_file.write("Purchase Amount: %s" % TotalAmount)
text_file.close()
If you’re using Python2.6 or higher, it’s preferred to use str.format()
with open("Output.txt", "w") as text_file:
text_file.write("Purchase Amount: {0}".format(TotalAmount))
For python2.7 and higher you can use {} instead of {0}
In Python3, there is an optional file parameter to the print function
with open("Output.txt", "w") as text_file:
print("Purchase Amount: {}".format(TotalAmount), file=text_file)
Python3.6 introduced f-strings for another alternative
with open("Output.txt", "w") as text_file:
print(f"Purchase Amount: {TotalAmount}", file=text_file)
Method 2
In case you want to pass multiple arguments you can use a tuple
price = 33.3
with open("Output.txt", "w") as text_file:
text_file.write("Purchase Amount: %s price %f" % (TotalAmount, price))
More: Print multiple arguments in python
Method 3
If you are using Python3.
then you can use Print Function :
your_data = {"Purchase Amount": 'TotalAmount'}
print(your_data, file=open('D:log.txt', 'w'))
For python2
this is the example of Python Print String To Text File
def my_func():
"""
this function return some value
:return:
"""
return 25.256
def write_file(data):
"""
this function write data to file
:param data:
:return:
"""
file_name = r'D:log.txt'
with open(file_name, 'w') as x_file:
x_file.write('{} TotalAmount'.format(data))
def run():
data = my_func()
write_file(data)
run()
Method 4
With using pathlib module, indentation isn’t needed.
import pathlib
pathlib.Path("output.txt").write_text("Purchase Amount: {}" .format(TotalAmount))
As of python 3.6, f-strings is available.
pathlib.Path("output.txt").write_text(f"Purchase Amount: {TotalAmount}")
Method 5
If you are using numpy, printing a single (or multiply) strings to a file can be done with just one line:
numpy.savetxt('Output.txt', ["Purchase Amount: %s" % TotalAmount], fmt='%s')
Method 6
use of f-string is a good option because we can put multiple parameters with syntax like str,
for example:
import datetime
now = datetime.datetime.now()
price = 1200
currency = "INR"
with open("D:\log.txt","a") as f:
f.write(f'Product sold at {currency} {price } on {str(now)}n')
Method 7
If you need to split a long HTML string in smaller strings and add them to a .txt file separated by a new line n use the python3 script below.
In my case I am sending a very long HTML string from server to client and I need to send small strings one after another.
Also be careful with UnicodeError if you have special characters like for example the horizontal bar ― or emojis, you will need to replace them with others chars beforehand.
Also make sure you replace the "" inside your html with ''
#decide the character number for every division
divideEvery = 100
myHtmlString = "<!DOCTYPE html><html lang='en'><title>W3.CSS Template</title><meta charset='UTF-8'><meta name='viewport' content='width=device-width, initial-scale=1'><link rel='stylesheet' href='https://www.w3schools.com/w3css/4/w3.css'><link rel='stylesheet' href='https://fonts.googleapis.com/css?family=Lato'><link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css'><style>body {font-family: 'Lato', sans-serif}.mySlides {display: none}</style><body></body></html>"
myLength = len(myHtmlString)
division = myLength/divideEvery
print("number of divisions")
print(division)
carry = myLength%divideEvery
print("characters in the last piece of string")
print(carry)
f = open("result.txt","w+")
f.write("Below the string splitted rn")
f.close()
x=myHtmlString
n=divideEvery
myArray=[]
for i in range(0,len(x),n):
myArray.append(x[i:i+n])
#print(myArray)
for item in myArray:
f = open('result.txt', 'a')
f.write('server.sendContent("'+item+'");' 'n'+ 'n')
f.close()
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0