我的代码完美无缺。我可以按照我想要的方式打印到屏幕上。但是,我希望它写入文件,以便我可以查看文件而不是打印屏幕。所以我试着做以下事情,但我想出了几个问题。错误讯息:
from xml.dom import minidom
import sys
import os, fnmatch
def find_files(directory, pattern):
for root, dirs, files in os.walk(directory):
for basename in files:
if fnmatch.fnmatch(basename, pattern):
filename = os.path.join(root, basename)
yield filename
for filename in find_files('c:/Python27','*file.xml'):
print ('Found file.xml:', filename)
xmldoc = minidom.parse(filename)
itemlist = xmldoc.getElementsByTagName('Game')
for item in itemlist:
year = item.getElementsByTagName('Year')
for s in year:
print item.attributes['name'].value, s.attributes['value'].value
TypeError:函数只需1个参数(给定2个),而代码使用write函数:
from xml.dom import minidom
import sys
import os, fnmatch
def find_files(directory, pattern):
for root, dirs, files in os.walk(directory):
for basename in files:
if fnmatch.fnmatch(basename, pattern):
filename = os.path.join(root, basename)
yield filename
f = open('test.txt','w')
for filename in find_files('c:/Python27','*file.xml'):
f.write('Found file.xml:', filename)
xmldoc = minidom.parse(filename)
itemlist = xmldoc.getElementsByTagName('Game')
for item in itemlist:
year = item.getElementsByTagName('Year')
for s in year:
f.write (item.attributes['name'].value), f.write(s.attributes['value'].value)
答案 0 :(得分:1)
如果你想把你的两个参数组成一行(f.write
会接受)你可以做类似的事情
f.write("Found file.xml:" + filename + "\n")
+
将连接这些元素,并在最后一个文件中为您提供一个整齐的元素,并在最后一个文件中为您提供一个换行符。
实际上,Error消息看起来好像在告诉你究竟是什么问题 - f.write
确实只接受一个参数,并且在函数调用中使用逗号表示第二个参数。