簡體   English   中英

python腳本可將輸出迭代地寫入文件

[英]python script to write output into a file iteratively

首先,我是一個新手,沒有任何編碼背景。

我正在嘗試創建一個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)

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文件,就像從文件中讀取文件一樣。 為了跟蹤我們正在使用的號碼,我們將使用enumerate

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM