长时间潜伏,第一次海报。 我寻找了一些解决方案,并没有找到满足我需求的东西。
我的作业如下:示例输入文件
student.txt
内容:
John Smith
Harvard
4.00
1600
“你的工作是编写一个名为dataCode(fileName)的python程序,它以文件的名称作为参数。它将打开文件并创建一个带有标记数据的新文件。上面的示例文件如下:“
<applicant>
<name> John Smith </name>
<school> Harvard </school>
<gpa> 4.00 </gpa>
<sat> 1600 </sat>
</applicant>
另外:输出文件的名称类似于要打开的文件的名称。如果输入是student.txt,那么out将是studentXML.txt
我正在尝试切片(从另一张海报借来的):
tags = ['name', 'university', 'gpa', 'sat'] #Add desired
tags xml = ''#Add xml parsing with open("data.txt") as data:
#read data and filter out whitespace
lines = [line.strip() for line in data.readlines()]
#Generating xml tags via slicing
xml = '\n'.join(['<{0:s}> {1:s} </{0:s)>'.format(tag, value)
for tag, value in zip(tags, lines)])
非常感谢任何帮助。我为编辑没有更多能力而道歉。
使用“data.txt”作为文件追溯。 (与项目位于同一文件夹中):
追踪(最近一次通话): 文件“c:\ Users \ Rokudo Hikaru \ Dropbox \ 22c005 \ Python Project XML generation.py”,第7行,in builtins.IOError:[Errno 2]没有这样的文件或目录:'data.txt'
更正代码后
with open(fileName) as data:
#Read data and filter out whitespace
lines = [line.strip() for line in data.readlines()]
# Generating xml tags via slicing
xml = '\n'.join(['<{0:s}> {1:s} </{0:s}>'.format(tag, value)
for tag, value in zip(tags, lines)])
print xml
我正在回复打印声明。
回溯: Traceback(最近一次调用最后一次): 文件“c:\ Users \ foobar \ XML generation.py”,第15行,in 语法错误:print xml:c:\ Users \ foobar \ XML generation.py,第1513行
使用“return xml”编辑将其射入shell。 一些格式问题,会修补并看看会发生什么。
答案 0 :(得分:2)
您的代码存在一些问题,正如评论中所提到的,很难判断它们是否在您实际执行的代码中,或者只是通过使用StackOverflow编辑器发布格式化问题。
无论哪种方式,这都是您的代码出了问题:
data.txt
的相对路径。此路径将相对于当前工作目录,而不是到Python脚本的位置。因此,请确保运行data.txt
所在目录中的代码。或,使用类似open("/home/foo/data.txt")
的绝对路径。tags
之前的xml
不属于那里且是语法错误with open("data.txt") as data:
应该在它自己的行上,并且它下面的代码缩进4个空格</{0:s)>
使用常规的右括号而不是大括号修复后,您的代码将如下所示:
tags = ['name', 'university', 'gpa', 'sat'] #Add desired
xml = '' #Add xml parsing
with open("data.txt") as data:
#read data and filter out whitespace
lines = [line.strip() for line in data.readlines()]
#Generating xml tags via slicing
xml = '\n'.join(['<{0:s}> {1:s} </{0:s}>'.format(tag, value)
for tag, value in zip(tags, lines)])
print xml
哪个收益
<name> John Smith </name>
<university> Harvard </university>
<gpa> 4.00 </gpa>
<sat> 1600 </sat>
所以它几乎可以工作,你只需要用开始和结束applicant
标签封装xml。
修改强> 工作目录是使用shell时启动程序(任何程序,而不仅仅是python)的地方。如果您使用IDE,那完全取决于IDE如何处理/操作工作目录,您需要查阅IDE的文档。
您可以通过
从Python打印工作目录import os
print os.getcwd()
应该可以帮助您确定工作目录的位置,或者IDE将其设置为。
要将文件名作为命令行参数传递,请使用
import sys
filename = sys.argv[1]
并从python generate.py data.txt
实际所在的目录中调用data.txt
这样的脚本。
但是你的任务说:
你的工作是编写一个名为
的python程序dataCode(fileName)
python程序通常被认为是.py
脚本,但dataCode(fileName)
是函数签名。所以你可能只是想把你的代码包装在这样的函数中:
def dataCode(fileName):
# ...
with open(fileName) as data
# ...