python脚本以迭代方式将输出写入文件

2024-06-13 21:35:47 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我是一个新手,没有编码方面的背景。你知道吗

我正在尝试创建一个python脚本,它将创建一个xml api文件,以后可以使用

我有一个csv文件,其中每行用于一个api调用。我可能有200多条这样的线。 我试图一次读取一行并将xml数据打印到一个文件中,比如file-1.xml

我可以打印出任何问题的数据,但我找不到一种方法来重定向这个输出一个文件,该文件应该被反复命名(例如,范围(1..200)内的I或其他)

#!/usr/bin/python
import csv
with open('file.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        length=len(row)
        print """<?xml version="1.0" encoding="UTF-8" ?>
      <value>
       <array>
        <data>
         <value><i4>%s</i4></value>
         <value><i4>%s</i4></value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value><i4>%s</i4></value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value>%s</value>
         <value><i4>%s</i4></value>
         <value>%s</value>
        </data>
       </array>
      </value>
     </member>
    </struct>
   </value>
  </param>
 </params>
</methodCall>
                    """ % tuple(row)

Tags: 文件csv数据api编码datavaluexml
2条回答

csv.reader类的每一行都有一个行号属性:line_num。只需使用reader.line_num作为文件名的一部分,如

for row in reader:
    with open('file-{0}.xml'.format(reader.line_num), 'w+') as out:
        xml_template = "..."    # Put your xml template here
        out.write(xml_template % tuple(row))

不需要额外的代码。 不过,这确实假设每个请求都有自己的单行。你知道吗

另外,对于新的格式准则,习惯上使用字符串格式的{0}和.format样式。因此,不要在整个模板中都使用%s,在最后使用% tuple(row),而要在最后使用{0}.format(tuple(row))。不过,只是个建议。见PEP 3101。你知道吗

import csv
with open('file.csv', 'r') as f:
    reader = csv.reader(f)
    for i, row in enumerate(reader, start=1):
        with open('file-{}.xml'.format(i), 'w+') as outfile:
            outfile.write(pattern % tuple(row)) #for brevity omitted template

您只需打开文件并write访问它,就像从文件中读取一样。为了跟踪我们使用的号码,我们将使用^{}

相关问题 更多 >