[英]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.