2016-03-16 6 views
1

Это действительно простой скрипт, написанный на python, который я могу запустить обычно в Linux. Но когда я переместил его в Windows, возникла странная ошибка. Я хочу помочь.using pyshark on python 2.7 сталкивается с lxml.etree.XMLSyntaxError

Перед запуском кода, я сделал некоторую подготовку к окружающей среде:
1. Установите Microsoft Visual C++ компилятор для Python 2.7
2. Установить питон 2.7.11
3. пункт установить pyinstaller
4. easy_install pyshark
Ниже приведена часть моего кода.

# -*- coding: utf-8 -*- 
from __future__ import print_function 
import pyshark 
import lxml 
import os 

def analysis_method(file_name): 
    cap = pyshark.FileCapture(input_file=file_name) 
    for packet in cap: 
     if hasattr(packet, "http"): 
      http_layer = packet["http"] 

Ниже представлена ​​информация об ошибке:
Traceback (самый последний вызов последнего):
Файл "packet_offline_analysis.py", строка 36, в analysis_method
для пакета в кепке:
Файл «C: \ Python27 \ lib \ site-packages \ pyshark-0.3.6.1-py2.7.egg \ pyshark \ capture \ capture.py ", строка 173, в _packets_from_tshark_sync
self._get_packet_from_stream (tshark_process.stdout, data, psml_structure = psml_structure))
Файл "C: \ Python27 \ lib \ site-packages \ trollius-1.0.4-py 2.7-win32.egg \ trollius \ base_events.py ", строка 300, в run_until_complete
return future.result()
Файл" C: \ Python27 \ lib \ site-packages \ trollius-1.0.4-py2.7 -win32.egg \ trollius \ futures.py ", строка 287, в результате
raise self._exception
lxml.etree.XMLSyntaxError: вход не является правильным UTF-8, укажите кодировку!
Байт: 0xD6 0xD0 0xB9 0xFA, строка 6, столбец 58

ответ

0

Удалите свою китайскую версию Wireshark и установите вместо нее английскую версию Wireshark. Тогда проблема решена.