【问题标题】:writing file before anything else in a function在函数中的任何其他内容之前写入文件
【发布时间】:2021-05-20 05:14:51
【问题描述】:

我有一个定义,它将写入一个文件并放置所有字符及其出现然后对其进行排序,我遇到了这个错误,其中我的代码行无法执行任何操作,因为没有任何内容写入文件,我把文件写在这之前,它不会写,除非我注释掉它之后排序的部分

  file = open("leaderboard.txt", "w+")

  def always_write_the_file(x):
    while x < len(collected_people):
      file.write("%s %s\n" % (collected_people[x], collected_characters.count(collected_people[x])))
      x = x + 1
  
  always_write_the_file(x)

  x = 0

  with open("leaderboard.txt") as  f:
    leaderboard = f.read().splitlines()

  while x < len(collected_people):
    character_count_turtle.penup()
    character_count_turtle.goto(non_depth, depth)
    character_count_turtle.pendown()
    
    sorted_leaderboard = sorted(leaderboard, key=lambda x: int(x.rsplit(".", maxsplit=1)[-1]))

    
    character_count_turtle.write("%s" % (sorted_leaderboard[x]), font=("arial", int(leaderboard_size), "normal"))

    depth = depth - (int(leaderboard_size) + 2)
    x = x + 1

我得到的错误是

可能是因为没有写入文件...

这里肯定写了一些东西

【问题讨论】:

  • 请准确说明出了什么问题,“我遇到了这个错误,我的代码行无法执行任何操作,因为尚未将任何内容写入文件”什么错误我>?提供完整的错误消息,包括堆栈跟踪。请始终提供minimal reproducible example
  • 您的编辑很棒,因为它传达了更多信息,但请注意 1) 上传错误消息的图像不是很好。其他用户将无法搜索错误消息。相反,您可以引用它或将其格式化为代码。 2)你可以说leaderboard.txt是空的,而character_data.txt有文字。
  • 请注意,当您打开文件时,您必须调用f.close(),否则您将无法看到您写入的内容。 with open ... as f: 语句在 with 语句结束时隐式关闭文件。另请注意,您可能的意思是在代码中的 with 语句中写入 open("leaderboard.txt", 'r'),您没有指定打开模式。从this answer 开始,默认模式是读取二进制文件 (rb),这可能是您不想要的。
  • 啊,我知道这似乎可以解决它,谢谢!

标签: python python-3.x list file turtle-graphics


【解决方案1】:

调用open()函数时需要指定打开模式:

  with open("leaderboard.txt", "r") as  f:
    leaderboard = f.read().splitlines()

注意在这个函数中:

  def always_write_the_file(x):
    while x < len(collected_people):
      file.write("%s %s\n" % (collected_people[x], collected_characters.count(collected_people[x])))
      x = x + 1

您可以使用for 循环来代替while 循环:

  def always_write_the_file(x_start):
    for x in range(x_start, len(collected_people)):
      file.write("%s %s\n" % (collected_people[x], collected_characters.count(collected_people[x])))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 2011-03-16
    • 1970-01-01
    相关资源
    最近更新 更多