[英]Problems with python 3.4 and xmltodict
I have this python script: 我有这个python脚本:
import xmltodict
with open('file.xml') as fd:
doc = xmltodict.parse(fd.read())
print("Name=" + doc['Data']['form'][0]['@Name'])
print("Time=" + doc['Data']['form'][0]['Period']['@Time'])
print("\tM-1\tM-2\tM-3\tM-4")
load_m1 = doc['Data']['form'][0]['Value'][0]['val'][0]['#text']
load_m2 = doc['Data']['form'][0]['Value'][1]['val'][0]['#text']
load_m3 = doc['Data']['form'][0]['Value'][2]['val'][0]['#text']
load_m4 = doc['Data']['form'][0]['Value'][3]['val'][0]['#text']
memory_m1 = doc['Data']['form'][0]['Value'][0]['val'][1]['#text']
memory_m2 = doc['Data']['form'][0]['Value'][1]['val'][1]['#text']
memory_m3 = doc['Data']['form'][0]['Value'][2]['val'][1]['#text']
memory_m4 = doc['Data']['form'][0]['Value'][3]['val'][1]['#text']
cpu_m1 = doc['Data']['form'][0]['Value'][0]['val'][2]['#text']
cpu_m2 = doc['Data']['form'][0]['Value'][1]['val'][2]['#text']
cpu_m3 = doc['Data']['form'][0]['Value'][2]['val'][2]['#text']
cpu_m4 = doc['Data']['form'][0]['Value'][3]['val'][2]['#text']
task_m1 = doc['Data']['form'][0]['Value'][0]['val'][3]['#text']
task_m2 = doc['Data']['form'][0]['Value'][1]['val'][3]['#text']
task_m3 = doc['Data']['form'][0]['Value'][2]['val'][3]['#text']
task_m4 = doc['Data']['form'][0]['Value'][3]['val'][3]['#text']
print("Load\t" + load_m1 + "\t" + load_m2 + "\t" + load_m3 + "\t"+ load_m4)
print("Memory\t" + memory_m1 + "\t" + memory_m2 + "\t" + memory_m3 + "\t" + memory_m4)
print("CPU\t" + cpu_m1 + "\t" + cpu_m2 + "\t" + cpu_m3 + "\t" + cpu_m4)
print("Task\t" + task_m1 + "\t" + task_m2 + "\t" + task_m3 + "\t" + task_m4 )
If I run it line by line from the python3 console no problem, but if I save it in a file and I run it as 如果我从python3控制台逐行运行没有问题,但是如果我将其保存在文件中并以
$ python3 script.py
it returns this error: 它返回此错误:
Traceback (most recent call last):
File "/usr/lib/python3.4/site-packages/xmltodict.py", line 5, in <module>
import defusedexpat as expat
ImportError: No module named 'defusedexpat'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "xml.py", line 1, in <module>
import xmltodict
File "/usr/lib/python3.4/site-packages/xmltodict.py", line 7, in <module>
from xml.parsers import expat
File "/home/script.py", line 3, in <module>
doc = xmltodict.parse(fd.read())
AttributeError: 'module' object has no attribute 'parse'
And if later I want to run it again line by line from the console, this happens: 如果以后我想再次从控制台逐行运行它,则会发生这种情况:
Python 3.4.3 (default, May 5 2015, 17:58:45)
[GCC 4.9.2] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import xmltodict
Traceback (most recent call last):
File "/usr/lib/python3.4/site-packages/xmltodict.py", line 5, in <module>
import defusedexpat as expat
ImportError: No module named 'defusedexpat'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.4/site-packages/xmltodict.py", line 7, in <module>
from xml.parsers import expat
File "/home/xml.py", line 3, in <module>
doc = xmltodict.parse(fd.read())
AttributeError: 'module' object has no attribute 'parse'
>>>
I tested this on Ubuntu and cygwin. 我在Ubuntu和cygwin上进行了测试。 I installed this way: 'pip3 install xmltodict' under cygwin and in this way under Ubuntu: 'sudo apt-get install python3-xmltodict' 我以这种方式安装:在cygwin下安装了“ pip3 install xmltodict”,在Ubuntu下以这种方式安装了:“ sudo apt-get install python3-xmltodict”
Try to uninstall xmltodict
package with following command: 尝试使用以下命令卸载xmltodict
软件包:
sudo pip uninstall xmltodict
or 要么
sudo pip3 uninstall xmltodict
And reinstall with following command. 并使用以下命令重新安装。
sudo pip3 install xmltodict
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.