Python 将字符串打印到文本文件

Python 将字符串打印到文本文件,python,string,text,file-io,Python,String,Text,File Io,我正在使用Python打开一个文本文档: text_file = open("Output.txt", "w") text_file.write("Purchase Amount: " 'TotalAmount') text_file.close() 我想将字符串变量TotalAmount的值替换到文本文档中。有人能告诉我怎么做吗?强烈建议使用上下文管理器。作为一个优势,可以确保文件始终处于关闭状态,无论发生什么情况: with open("Output.txt", &

我正在使用Python打开一个文本文档:

text_file = open("Output.txt", "w")

text_file.write("Purchase Amount: " 'TotalAmount')

text_file.close()

我想将字符串变量
TotalAmount
的值替换到文本文档中。有人能告诉我怎么做吗?

强烈建议使用上下文管理器。作为一个优势,可以确保文件始终处于关闭状态,无论发生什么情况:

with open("Output.txt", "w") as text_file:
    text_file.write("Purchase Amount: %s" % TotalAmount)
这是显式版本(但请始终记住,应该首选上面的上下文管理器版本):

如果您使用的是Python2.6或更高版本,最好使用
str.format()

对于python2.7及更高版本,您可以使用
{}
而不是
{0}

在Python3中,
print
函数有一个可选的
file
参数

with open("Output.txt", "w") as text_file:
    print("Purchase Amount: {}".format(TotalAmount), file=text_file)
引入Python3.6作为另一个替代方案

with open("Output.txt", "w") as text_file:
    print(f"Purchase Amount: {TotalAmount}", file=text_file)

如果要传递多个参数,可以使用元组

price = 33.3
with open("Output.txt", "w") as text_file:
    text_file.write("Purchase Amount: %s price %f" % (TotalAmount, price))
更多:

如果您使用的是Python3

然后您可以使用:

用于蟒蛇2

这是Python将字符串打印到文本文件的示例

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()

如果使用numpy,只需一行即可将单个(或多个)字符串打印到文件中:

numpy.savetxt('Output.txt', ["Purchase Amount: %s" % TotalAmount], fmt='%s')

使用pathlib模块时,不需要缩进

import pathlib
pathlib.Path("output.txt").write_text("Purchase Amount: {}" .format(TotalAmount))
从Python3.6开始,f-strings是可用的

pathlib.Path("output.txt").write_text(f"Purchase Amount: {TotalAmount}")

使用
f-string
是一个很好的选择,因为我们可以使用
str
等语法放置
多个参数

例如

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')

假设TotalAmount是一个整数,“%s”不应该是“%d”吗?@RuiCurado,如果
TotalAmount
是一个
int
,那么
%d
%s
都会做同样的事情。答案很好。我在一个几乎相同的用例中看到一个语法错误:
with…:print({0}.format(some_var),file=text_file)
正在抛出:
SyntaxError:invalid syntax
在等号处…@nicorellius,如果您希望在Python2.x中使用它,您需要将
from_uuuuuufuture\uuuuu导入print\u函数
放在文件顶部。请注意,这将把文件中的所有print语句转换为较新的函数调用。为了确保知道变量类型通常是什么,请将其转换为确保,例如:“text_file.write('Purchase Amount:%s'%str(TotalAmount))”,它将用于列表、字符串、浮点、整数、,你为什么不做
w+
?只是偏好,我喜欢区分我从文件中写入和读取的时间。你为什么不做
w+
打印(你的_数据,file=open(…)
会保持文件打开你为什么不做
w+
import pathlib
pathlib.Path("output.txt").write_text("Purchase Amount: {}" .format(TotalAmount))
pathlib.Path("output.txt").write_text(f"Purchase Amount: {TotalAmount}")
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')