python3 写文件问题,,0x92即10010
python3 写文件问题,,0x92即10010
0x92即10010010,UTF8 中编码一个字符的第一个字节(start byte)只可能是0xxxxxxx、110xxxxx、1110xxx、11110xxx……而后面的字节只可能是10xxxxxx。也就是说0x92只能作为后面的字节,却出现在了第一个字节的位置。
出现这种问题绝大部分情况是因为文件不是 UTF8 编码的(例如,可能是 GBK 编码的),而系统默认采用 UTF8 解码。解决方法是改为对应的解码方式。
极少数情况是因为文件损坏了或者和一部分非 UTF8 编码混在一起,可以修复文件或采用replace等方式解码。
Python 2 没有问题是因为 Python 2 默认以字节流(对应 Python 3 的bytes)的方式读文件,不像 Python 3 默认解码为unicode,把读文件的方式改为rb有同样的效果,不过 Python 3 中处理bytes还可能遇到很多问题就是了……
此种方式报错UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xea in position 3171: invalid c
with open(childrenFile + "\\" + childrenFile_00,"r", "utf-8") as f:
则尝试下面这种方式,解释如上
with open(childrenFile + "\\" + childrenFile_00,"rb") as f:
python3 读取文件 写入库
/*******************************************************************************************************/
#coding:utf-8
from imp import reload
import pymysql
import time
import json
import datetime
import requests
import urllib
import datetime
import getopt
import random
import xlwt
import os
import sys
import codecs
reload(sys)
if os.path.exists(‘logs‘)==False:
os.mkdir(‘logs‘)
config={‘host‘:‘127.0.0.1‘,
‘user‘:‘root‘,
‘password‘:‘root‘,
‘port‘:3306 ,
‘database‘:‘test‘,
‘charset‘:‘utf8‘
}
conn= pymysql.connect(**config)
cur=conn.cursor()
path = ‘F:\BreachCompilation\data‘
files = os.listdir(path)
for file in files :
childrenFile = path + "\\" + file
files_00 = os.listdir(childrenFile)
for childrenFile_00 in files_00 :
with open(childrenFile + "\\" + childrenFile_00,"rb") as f:
ftextlist = f.readlines()
start = 0
for line in ftextlist:
##content_0 = ftextlist.split("\n")
element = line.decode("utf-8").split(":")
start = start + 1
print("-------索引------" + str(start))
if( len(element) >= 2 ):
print("邮箱" + element[0] + "密码:" + element[1])
insertSQL = "insert into 40G (uname, pwd) value(‘%s‘, ‘%s‘)" % (pymysql.escape_string(element[0]), pymysql.escape_string(element[1]))
cur.execute(insertSQL)
conn.commit()
##element = content.split(":")
##print(element[0] + "----" + element[1])
##insertSQL = "insert into 40G (uname, pwd) value(‘%s‘, ‘%s‘)" % (element[0], element[1])
print("over")
##cur.close()
##conn.close()
/**********************python3 当 \x 需要转义 转义为 \/x**************************************************************************/
#coding:utf-8
from imp import reload
import pymysql
import time
import json
import datetime
import requests
import urllib
import datetime
import getopt
import random
import xlwt
import os
import sys
import codecs
reload(sys)
if os.path.exists(‘logs‘)==False:
os.mkdir(‘logs‘)
config={‘host‘:‘127.0.0.1‘,
‘user‘:‘root‘,
‘password‘:‘root‘,
‘port‘:3306 ,
‘database‘:‘test‘,
‘charset‘:‘utf8‘
}
conn= pymysql.connect(**config)
cur=conn.cursor()
path = ‘E:\/xunleixiazai\BreachCompilation\data‘
files = os.listdir(path)
for file in files :
childrenFile = path + "\\" + file
files_00 = os.listdir(childrenFile)
for childrenFile_00 in files_00 :
with open(childrenFile + "\\" + childrenFile_00,"rb") as f:
ftextlist = f.readlines()
start = 0
for line in ftextlist:
##content_0 = ftextlist.split("\n")
element = line.decode("utf-8").split(":")
start = start + 1
print("-------索引------" + str(start))
if( len(element) >= 2 ):
print("邮箱" + element[0] + "密码:" + element[1])
insertSQL = "replace into 40G (uname, pwd) value(‘%s‘, ‘%s‘)" % (pymysql.escape_string(element[0]), pymysql.escape_string(element[1]))
cur.execute(insertSQL)
conn.commit()
##element = content.split(":")
##print(element[0] + "----" + element[1])
##insertSQL = "insert into 40G (uname, pwd) value(‘%s‘, ‘%s‘)" % (element[0], element[1])
print("over")
##cur.close()
##conn.close()
python3 写文件问题
相关内容
- OCR识别-python3.5版,,刚接触,啥子都不会,
- (一)安装Python,,一、安装python
- Python安装教程,入学Python第一步!,,一、安装Python
- python基础教程(九),,python异常py
- python语言特性-------python2.7教程学习【廖雪峰版】(一)
- PYTHON之爬虫学习(一)基础,, 关于python爬
- python由来和入门,,一、Python简介
- Emeditor 实现快捷键 对python 加减首行注释,,Emeditor 比
- Mac下使用venv模块建立python虚线环境,,venv模块命令1.
- Django admin 后台操作数据库以问卷调查为例,,Django的后
评论关闭