我有以下代码。我想写40个带编号的输出文件(outfile
),每个文件有100行。 while循环应该检查计数器何时达到100.但我的counter = counter + 1
不能完成这项工作。 counter
停留在1
。
class MyStreamListener(tweepy.StreamListener):
def on_data(self, data):
for i in range(40): # create max 40 outfiles
outfile = (projname + "_" + str(i+1) + "_output.json")
counter = 0
while counter <= 100:
try:
with open(outfile, 'a') as f:
f.write(data)
counter = counter + 1
print("\rAppending tweet " + str(counter) + " to " + str(outfile), end="")
return True
except BaseException as e:
print("Error on_data: " % str(e))
return True
else:
break
答案 0 :(得分:2)
我冒昧地重新编写了你的代码。
class MyStreamListener(tweepy.StreamListener):
def on_data(self, data):
for i in range(40): # create max 40 outfiles
outfile = (projname + "_" + str(i+1) + "_output.json")
with open(outfile, 'a') as f:
for counter in range(100):
f.write(data)
print("\rAppending tweet " + str(counter) + " to " + str(outfile), end="")
return True
正如您可能已经注意到,现在有一些事情以不同的方式完成。
while
。try
阻止没有意义。应该尝试什么因为它可能会失败?else
在最后?我有可能会错过解释您的一些代码并删除应该存在的功能。如果是这种情况或您有任何疑问,请告诉我。
注意:请注意,.write()
与print()
不同,并且不会自动添加换行符。因此,除非data
包含换行符,否则您的脚本会将所有内容写入一行。
我最后一件事。 data
在每次迭代中都不会更改。你在每个文件中写了100次相同的东西。这是理想的行为吗?