【发布时间】:2020-07-04 20:36:20
【问题描述】:
我有以下代码,我希望将输入文件和输出文件拉入其他函数,但是,这些代码似乎没有返回。如果这很简单,仍然很新,所以很抱歉。
# PYTHON 3.76 ONLY
# Version 0.0.1
import xml.etree.cElementTree as et
import pandas as pd
import sys, getopt
def main(argv):
inputfile = ''
outputfile = ''
try:
opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
except getopt.GetoptError:
print ('test.py -i <inputfile> -o <outputfile>')
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print ('test.py -i <inputfile> -o <outputfile>')
sys.exit()
elif opt in ("-i", "--ifile"):
inputfile = arg
elif opt in ("-o", "--ofile"):
outputfile = arg
print ('Input file is "', inputfile)
print ('Output file is "', outputfile)
return inputfile, outputfile
if __name__ == "__main__":
main(sys.argv[1:])
# convert XML to dataframe
def xml2df(xml_data):
tree = et.parse(xml_data)
print (tree.getroot())
root = tree.getroot()
print ("tag=%s, attrib=%s" % (root.tag, root.attrib))
#iterate over each value for room and each user and add to rows
rows = []
for child in root.iter('rooms'):
roomId, roomTitle = 'id', 'ttl'
for it in child:
if it.tag == 'room':
roomId = it.findtext('roomID')
roomTitle = it.findtext('roomTitle')
roomStatus = it.findtext('status')
isAnonymous = it.findtext('isAnonymous')
elif it.tag == 'users':
rows.append([roomId, roomTitle, roomStatus, isAnonymous, it.findtext('uuid'), it.findtext('bbgEmail'),
it.findtext('corpEmail'), it.findtext('fullName'), it.findtext('firmName'), it.findtext('accountNumber'),
it.findtext('city'), it.findtext('accountName'), it.findtext('inviteDate'), it.findtext('removalDate')])
df = pd.DataFrame(rows, columns=['roomId', 'roomTitle', 'roomStatus', 'isAnonymous', 'uuid', 'bbgEmail',
'corpMail', 'fullName', 'firmName', 'accountNumber', 'city', 'accountName', 'inviteDate', 'removalDate'])
return df
df = xml2df(inputfile)
#output to csv
df.to_csv(ooutputfile+".csv", sep=',', index=False)
返回错误
Traceback(最近一次调用最后一次):文件“parse_pChatDump.py”,行 63,在 df = xml2df(inputfile) NameError: name 'inputfile' is not defined
【问题讨论】:
-
inputfile和outputfile是
main方法的局部变量,外部无法访问