for循环中的Python变量返回TypeError

for循环中的Python变量返回TypeError,python,Python,我正在调用一个函数,需要在一个范围内循环,为该范围内的每个值调用该函数。最大值由与我遇到问题的函数findPageCount不同的函数返回 对于MakeRequest,我可以使用硬编码的值来运行它,它工作得很好。当我添加for循环并将整数传递到函数的两行时,我发现了底部列出的错误。我认为这是一个小的格式差异,但我还没有成功地跟踪到目前为止 目标是将for循环中的i值传递到xml字符串中的请求中,以便显示下一页,并传递到f=open语句中,以便为该页创建新文件 我感谢你提供的任何帮助 def Ma

我正在调用一个函数,需要在一个范围内循环,为该范围内的每个值调用该函数。最大值由与我遇到问题的函数findPageCount不同的函数返回

对于MakeRequest,我可以使用硬编码的值来运行它,它工作得很好。当我添加for循环并将整数传递到函数的两行时,我发现了底部列出的错误。我认为这是一个小的格式差异,但我还没有成功地跟踪到目前为止

目标是将for循环中的i值传递到xml字符串中的请求中,以便显示下一页,并传递到f=open语句中,以便为该页创建新文件

我感谢你提供的任何帮助

def MakeRequest(i):
  # some code to call api removed
  xml_string = "<list><FilterItems><FilterItem attribute='pageNumber' value='%d' /></FilterItems><SortItems><SortItem attribute ='activity_aud_mem_id' sortOrder='0'/></SortItems></list>"   % i

  f = open('/Users/output_test_%d.txt', 'w') % i
  for line in r:
      try:
          f.write('%s\n' % line)
      except UnicodeEncodeError:
          pass

  f.close()

max_page = findPageCount()

for i in range(0, max_page): 
  MakeRequest(i);  
使用以下命令:

f = open('/Users/output_test_%d.txt' % i, 'w')
字符串格式化程序运算符%处理前面的字符串,因此必须将其直接放在后面

我建议将整个块重新格式化如下:

with open('/Users/output_test_%d.txt' % i, 'w') as f:
    for line in r:
        try:
            f.write('%s\n' % line)
        except UnicodeEncodeError:
            pass
那么你就不需要f了。请使用此选项:

f = open('/Users/output_test_%d.txt' % i, 'w')
字符串格式化程序运算符%处理前面的字符串,因此必须将其直接放在后面

我建议将整个块重新格式化如下:

with open('/Users/output_test_%d.txt' % i, 'w') as f:
    for line in r:
        try:
            f.write('%s\n' % line)
        except UnicodeEncodeError:
            pass

那么您不需要f.close,也不需要测试它:

f = open('/Users/output_test_%d.txt'  % i , 'w')

未经测试就胡乱猜测:

f = open('/Users/output_test_%d.txt'  % i , 'w')