如何解决使用python脚本合并多个xml时找不到文件或目录
我正在尝试通过在 shell 脚本中调用以下 python 脚本来合并文件
merge.py
#!/usr/bin/env python
#Merge xml files
import sys
from xml.etree import ElementTree
def run(files):
first = None
for filename in files:
data = ElementTree.parse(filename).getroot()
if first is None:
first = data
else:
first.extend(data)
if first is not None:
print ElementTree.tostring(first)
if __name__ == "__main__":
run(sys.argv[1:])
但是在运行时,我收到以下错误
Traceback (most recent call last):
File "merge.py",line 18,in <module>
run(sys.argv[1:])
File "merge.py",line 9,in run
data = ElementTree.parse(filename).getroot()
File "/usr/lib64/python2.7/xml/etree/ElementTree.py",line 1182,in parse
tree.parse(source,parser)
File "/usr/lib64/python2.7/xml/etree/ElementTree.py",line 647,in parse
source = open(source,"rb")
IOError: [Errno 2] No such file or directory: 'one.xml\ntwo.xml'
它正在将所有 xml 文件的路径放在一起,因此无法找到该文件。
它在脚本中的调用方式:
python merge.py `find "path/" -type f -name "*.xml"` > "path/combined.xml"
解决方法
find "path/" -type f -name "*.xml"
的输出是以行 \n
分隔的文件列表。
您可以进行更改以正确拆分文件并传递给下一个函数。
if __name__ == "__main__":
files = None
if len(sys.argv[1:]) != 0:
files = "".join(sys.argv[1:]).split('\n')
run(files)
else:
raise Exception("Sorry,no files found")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。