我必须使用命令提示符和python接收csv文件形式的输入,然后读取它并将其转换为与csv文件同名的xml文件,但扩展名为.xml的文件或用户可以设置使用-o --output可选命令行参数的输出文件名和路径。好吧,我已经在Google上搜索了几天,到目前为止,我的程序允许我输入命令行参数,并且我可以将csv转换为xml文件,但不会使用与csv文件相同的名称或当用户使用时打印设置名称。相反,它只是打印出一个空白文件。这是我的代码:
import sys, argparse
import csv
import indent
from xml.etree.ElementTree import ElementTree, Element, SubElement, Comment, tostring
parser=argparse.ArgumentParser(description='Convert wordlist text files to various formats.', prog='Text Converter')
parser.add_argument('-v','--verbose',action='store_true',dest='verbose',help='Increases messages being printed to stdout')
parser.add_argument('-c','--csv',action='store_true',dest='readcsv',help='Reads CSV file and converts to XML file with same name')
parser.add_argument('-x','--xml',action='store_true',dest='toxml',help='Convert CSV to XML with different name')
parser.add_argument('-i','--inputfile',type=argparse.FileType('r'),dest='inputfile',help='Name of file to be imported',required=True)
parser.add_argument('-o','--outputfile',type=argparse.FileType('w'),dest='outputfile',help='Output file name')
args = parser.parse_args()
def main(argv):
reader = read_csv()
if args.verbose:
print ('Verbose Selected')
if args.toxml:
if args.verbose:
print ('Convert to XML Selected')
generate_xml(reader)
if args.readcsv:
if args.verbose:
print ('Reading CSV file')
read_csv()
if not (args.toxml or args.readcsv):
parser.error('No action requested')
return 1
sys.exit(main(sys.argv))
对于generate_xml()函数,您可以忽略它,因为它接受以某种方式格式化的csv文件,因此您可能无法理解它,但是,我认为问题出在tree.write()上,因为该部分生成的XML文件的名称为是用代码本身而不是命令提示符下的参数编写的。
森栏
相关分类