使用带有 open= 的打印
Using print with open=
我正在尝试将以下代码打印到文件中。
通过堆栈溢出,我发现了 file=open 代码,但它似乎没有写入文件。
PS。我还没有创建文件
print("Average Grade " + str(average), "At least 70% " +
str(Grade1), "60% - 69% " + str(Grade2), "50% - 59% " +
str(Grade3), "40% - 49% " + str(Grade4), "Less than 40% " +
str(Grade5), "Highest Grade " +
str(max_grade), "Student Name:" + str(student_name), sep="\n",
file=open("results.txt", 'a'))
with open("results.txt", 'a') as f:
f.write("Average Grade " + str(average), "At least 70% " +
str(Grade1), "60% - 69% " + str(Grade2), "50% - 59% " +
str(Grade3), "40% - 49% " + str(Grade4), "Less than 40% " +
str(Grade5), "Highest Grade " +
str(max_grade), "Student Name:" + str(student_name))
请注意,open 中的 'a' 选项用于追加。您也可以使用 'w' 进行写入。
在python中,我们通常不使用打印语句来执行此操作。考虑以下替代方案。使用 "context manager" 允许您写入多行,如果程序在写入文件时抛出错误,也有助于避免某些问题。
with open('results.txt', 'a') as f:
line = "Average Grade " + str(average), "At least 70% " + str(Grade1), "60% - 69% " + str(Grade2), "50% - 59% " + str(Grade3), "40% - 49% " + str(Grade4), "Less than 40% " + str(Grade5), "Highest Grade " + str(max_grade), "Student Name:" + str(student_name)
f.write(line)
顺便说一句,如果您以交互方式执行此操作,您可能不会立即看到写入文件的数据 - 使用终端而不是 运行 脚本时,这可能是一个真正的混淆点!发生的情况是 python 以大块的形式将数据写入文件,而不是每次调用 f.write
时都要求硬盘驱动器工作。 flush
ing 输出缓冲区告诉 python 立即写入数据 - 例如 f.flush()
.
print 语句实际上确实有一个 flush
参数,因此可能与此高度相关。尽管如此,我还是建议改用 with
语句。
我让它工作了。我打开文件然后在打印结束时使用 file=。
newFile = open("results.txt", 'w')
print("Average Grade " + str(average), "At least 70% " + str(Grade1), "60% - 69% " + str(Grade2), "50% - 59% " +
str(Grade3), "40% - 49% " + str(Grade4), "Less than 40% " + str(Grade5), "Highest Grade " +
str(max_grade), "Student Name:" + str(student_name), sep="\n", file=newFile)
newFile.close()
试试这个:
file = open("Here you put your path to a file, but replace '\' with '\'", 'w+')
# That opened your file in 'write' mode, and '+' means that if it does not
# exist, one will be created
file.write("Average Grade " + str(average), "At least 70% " +
str(Grade1), "60% - 69% " + str(Grade2), "50% - 59% " +
str(Grade3), "40% - 49% " + str(Grade4), "Less than 40% " +
str(Grade5), "Highest Grade " +
str(max_grade), "Student Name:" + str(student_name))
file.close()
我正在尝试将以下代码打印到文件中。 通过堆栈溢出,我发现了 file=open 代码,但它似乎没有写入文件。
PS。我还没有创建文件
print("Average Grade " + str(average), "At least 70% " +
str(Grade1), "60% - 69% " + str(Grade2), "50% - 59% " +
str(Grade3), "40% - 49% " + str(Grade4), "Less than 40% " +
str(Grade5), "Highest Grade " +
str(max_grade), "Student Name:" + str(student_name), sep="\n",
file=open("results.txt", 'a'))
with open("results.txt", 'a') as f:
f.write("Average Grade " + str(average), "At least 70% " +
str(Grade1), "60% - 69% " + str(Grade2), "50% - 59% " +
str(Grade3), "40% - 49% " + str(Grade4), "Less than 40% " +
str(Grade5), "Highest Grade " +
str(max_grade), "Student Name:" + str(student_name))
请注意,open 中的 'a' 选项用于追加。您也可以使用 'w' 进行写入。
在python中,我们通常不使用打印语句来执行此操作。考虑以下替代方案。使用 "context manager" 允许您写入多行,如果程序在写入文件时抛出错误,也有助于避免某些问题。
with open('results.txt', 'a') as f:
line = "Average Grade " + str(average), "At least 70% " + str(Grade1), "60% - 69% " + str(Grade2), "50% - 59% " + str(Grade3), "40% - 49% " + str(Grade4), "Less than 40% " + str(Grade5), "Highest Grade " + str(max_grade), "Student Name:" + str(student_name)
f.write(line)
顺便说一句,如果您以交互方式执行此操作,您可能不会立即看到写入文件的数据 - 使用终端而不是 运行 脚本时,这可能是一个真正的混淆点!发生的情况是 python 以大块的形式将数据写入文件,而不是每次调用 f.write
时都要求硬盘驱动器工作。 flush
ing 输出缓冲区告诉 python 立即写入数据 - 例如 f.flush()
.
print 语句实际上确实有一个 flush
参数,因此可能与此高度相关。尽管如此,我还是建议改用 with
语句。
我让它工作了。我打开文件然后在打印结束时使用 file=。
newFile = open("results.txt", 'w')
print("Average Grade " + str(average), "At least 70% " + str(Grade1), "60% - 69% " + str(Grade2), "50% - 59% " +
str(Grade3), "40% - 49% " + str(Grade4), "Less than 40% " + str(Grade5), "Highest Grade " +
str(max_grade), "Student Name:" + str(student_name), sep="\n", file=newFile)
newFile.close()
试试这个:
file = open("Here you put your path to a file, but replace '\' with '\'", 'w+')
# That opened your file in 'write' mode, and '+' means that if it does not
# exist, one will be created
file.write("Average Grade " + str(average), "At least 70% " +
str(Grade1), "60% - 69% " + str(Grade2), "50% - 59% " +
str(Grade3), "40% - 49% " + str(Grade4), "Less than 40% " +
str(Grade5), "Highest Grade " +
str(max_grade), "Student Name:" + str(student_name))
file.close()