Python 使用带open的print=

Python 使用带open的print=,python,python-3.x,file-io,Python,Python 3.x,File Io,我正试图将下面的代码打印到一个文件中。 通过查看堆栈溢出,我发现file=open代码,但它似乎没有写入文件 另外,我还没有创建文件 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% "

我正试图将下面的代码打印到一个文件中。 通过查看堆栈溢出,我发现file=open代码,但它似乎没有写入文件

另外,我还没有创建文件

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

请注意,open中的“a”选项用于追加。您还可以使用“w”进行写操作。

在python中,我们通常不使用print语句。考虑下面的备选方案。使用上下文管理器允许您写入多行,并且如果程序在写入文件时抛出错误,也有助于避免某些问题

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时都要求硬盘进行工作。刷新输出缓冲区告诉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.writeyourstring实际执行此操作。如果可能的话,使用上下文管理器。你是什么意思?我还是个新手,这是我找到代码的地方。使用文件=。。。打印的参数应该有效。也许您想发布一篇文章,以便读者能够重现您的问题。您的代码适用于我的python 3.6。在程序运行后,您是否正在查看正确目录中的results.txt?
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()