【问题标题】:Python3- Writing for loop output to filePython3-将循环输出写入文件
【发布时间】:2015-02-01 14:54:29
【问题描述】:
import binascii
import struct
import os
from PIL import Image
anim_1 = Image.open(r"textures/water.png")
anim_1_txt = (r"textures/water_anim.txt")
print(anim_1.format)
print(anim_1.size)
print(anim_1.mode)

frame_rate = input("Enter a Frame Rate for water (default 2) - ")

anim_1_width = anim_1.size[0]
anim_1_length = anim_1.size[1]

anim_1_frame_length = ((anim_1_length)/(anim_1_width))

print ("Frame count is " + str(anim_1_frame_length))

with open (anim_1_txt, 'ab') as anim_:
    for x in range(0, int(anim_1_frame_length)):
            anim_.writelines(x)
print (("Writting Frame %d") % (x) + ('*') + (frame_rate))

TypeError: 'int' object is not iterable "anim_.writelines(x)"

我已经查看了此处解释如何执行此操作的其他问题;不过,我尝试的一切似乎都不起作用。我被告知要对字符串进行编码,但我不知道如何在循环中执行此操作。我用循环失败了很多次,我真的不使用它们。这使得编码对我来说真的很耗时。我还需要循环在文本文件的新行上打印每一帧,因为 示例:

1*2
2*2
2*3
...

【问题讨论】:

  • 您能否提供比“似乎不起作用”更多的信息?错误信息?意外的输出?尽可能具体。
  • 不清楚要写入文件的数据。您只打开一个图像文件,那么您要写入的这些多帧在哪里?你想如何将图像写入文本文件?您的代码失败,因为 x 是一个数字而不是行列表,但我无法告诉您如何在不知道您想要做什么的情况下修复它。
  • @jomrsharpe 我在你编辑它之前做过。所以你应该已经看到了错误信息。 @ interjay anim_1_frame_length = ((anim_1_length)/(anim_1_width))
  • @interjay 我将帧数写入文件而不是图像本身。
  • 请显示完整错误信息。

标签: python python-3.x for-loop pillow


【解决方案1】:

此错误可能是因为您将int 提供给writelines()。 将其转换为字符串。

for x in range(0, int(anim_1_frame_length)):
    anim_.writelines(str(x)) 

至于问题的第二部分,您可以在打印的字符串中使用\n。由于我不确定您的“框架”是哪个变量,我将在下面的代码中将其命名为my_frame

for x in range(0, int(anim_1_frame_length)):
    anim_.writelines(str(x)) 
    # Use str(my_frame) if needed
    print('\n' + my_frame + '*' + my_frame) 

请注意,如果my_frame 不是字符串,则必须使用str(my_frame)

【讨论】:

  • 谢谢就是这样:) 我正在尝试打印 >> 暗示。但这正是我所需要的。 writelines 没有写超过一行。
  • .writelines 不起作用,它写了“0*21*22*23*24*25*26*27*28*29*210*211*212*2...”但我做了 anim_.writelines((str(x)) + ('*') + (frame_rate))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-08
  • 2014-07-29
  • 2017-08-26
  • 1970-01-01
  • 2018-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多