我有一个使用VirusTotal Api 2.0的python 2.7脚本(更多信息:https://www.virustotal.com/es/documentation/public-api/#scanning-files)当我尝试扫描某些文件时,它有时没有问题,但其他文件引发了这个错误:
Traceback (most recent call last):
File "F:/devPy/myProjects/script_vt.py", line 138, in <module>
scanMyFile()
File "F:/devPy/myProjects/script_vt.py", line 75, in scanQueue
jsonScan = scanAFile(fileToScan)
File "F:/devPy/myProjects/script_vt.py", line 37, in scanAFile
json = postfile.post_multipart(host, selector, fields, files)
File "F:\devPy\myProjects\script_vt.py", line 10, in post_multipart
content_type, body = encode_multipart_formdata(fields, files)
File "F:\devPy\myProjects\script_vt.py", line 42, in encode_multipart_formdata
body = CRLF.join(L)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)
这是引发错误的地方。:
def scanAFile(fileToScan):
host = "www.virustotal.com"
selector = "https://www.virustotal.com/vtapi/v2/file/scan"
fields = [("apikey", myPublicKey)]
file_to_send = open(fileToScan, "rb").read()
files = [("file", fileToScan, file_to_send)]
json = postfile.post_multipart(host, selector, fields, files)
return simplejson.loads(json)
我在StackOverflow上阅读了很多类似的问题,但没有一个能为我工作。 我在Windows下使用pycharm。
答案 0 :(得分:0)
似乎问题是由于unicode代码数据。将默认编码设置为UTF-8可能会解决问题。
在脚本顶部添加以下行。
import sys
reload(sys)
sys.setdefaultencoding('utf8')