python脚本迭代地将输出写入文件(python script to write output into a file iteratively)

编程入门 行业动态 更新时间:2024-10-23 05:35:03
python脚本迭代地将输出写入文件(python script to write output into a file iteratively)

首先,我是一个新手,没有编码背景。

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

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

我可以打印数据没有任何问题,但我找不到一种方法来重定向此输出一个应该迭代命名的文件(例如对于范围内的i(1..200)或其他东西)

#!/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)

First of all I am a newbie, and has no background on coding.

i am trying to create a python script that will create an xml api file which can be used later,

i have a csv file where each line is for one api call. I might have 200+ such lines. I am trying to read one line at time and print the xml data into a file, lets say file-1.xml

I can print the data with out any issues, but I could not find a way to redirect this output a file which should be named iteratively (e.g for i in range(1..200) or something)

#!/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样式的字符串格式。 因此,最后通过模板和% tuple(row)代替%s ,而在末尾使用{0}和.format(tuple(row)) 。 不过只是一个建议。 见PEP 3101 。

The csv.reader class has a line number attribute for each row: line_num. Simply use reader.line_num as part of the file name like

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))

No fancy extra code needed. This does assume, though, that each request is on its own, single line.

Also, with new formatting guidelines, it is customary to use the {0} and .format style of string formatting. So instead of %s all through your template and % tuple(row) at the end, use {0} and .format(tuple(row)) at the end. Just a suggestion, though. See PEP 3101.

更多推荐

本文发布于:2023-08-03 16:12:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1393588.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:脚本   迭代   文件   python   script

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!