python代码块-python一些常用代码块

centos下 python3无法print中文

UnicodeEncodeError: "ascii’ codec can’t encode characters in position 0-10: ordinal not in range(128

这类问题多来源于python控制台的编码问题,进入python环境

>>> import sys

>>> sys.stdout.encoding

'ANSI_X3.4-1968'

发现这里的编码不是utf-8,而是一个ANSI_X3.4-1968,工程字符集,我们应该要将其改为utf-8才行。

在root用户下声明编码:

export LC_ALL='en_US.UTF-8'

export PYTHONIOENCODING='utf-8'

再到python环境试一下,发现可以了,这种情况下python输出中文就不会乱码了

>>> import sys

>>> sys.stdout.encoding

'utf-8'

日志文件(即在控制台打印也会写入到日志文件)

import datetime

import logging

from logging import handlers

class Logger(object):

level_relations = {

'debug': logging.DEBUG,

'info': logging.INFO,

'warning': logging.WARNING,

'error': logging.ERROR,

'crit': logging.CRITICAL

} # 日志级别关系映射

def __init__(self, filename, level='info', when='D', backCount=3,

fmt='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'):

self.logger = logging.getLogger(filename)

format_str = logging.Formatter(fmt) # 设置日志格式

self.logger.setLevel(self.level_relations.get(level)) # 设置日志级别

sh = logging.StreamHandler() # 往屏幕上输出

sh.setFormatter(format_str) # 设置屏幕上显示的格式

th = handlers.TimedRotatingFileHandler(filename=filename, when=when, backupCount=backCount,

encoding='utf-8') # 往文件里写入#指定间隔时间自动生成文件的处理器

# 实例化TimedRotatingFileHandler

# interval是时间间隔,backupCount是备份文件的个数,如果超过这个个数,就会自动删除,when是间隔的时间单位,单位有以下几种:

# S 秒

# M 分

# H 小时、

# D 天、

# W 每星期(interval==0时代表星期一)

# midnight 每天凌晨

th.setFormatter(format_str) # 设置文件里写入的格式

self.logger.addHandler(sh) # 把对象加到logger里

self.logger.addHandler(th)

# 实例化log对象

date = datetime.datetime.now().strftime('%Y%m%d')

Log = Logger('/log/'+date+'.log', level='debug').logger

# 日志使用

from logger import Log

Log.info(msg=(count1, cid, url))

Log.debug(msg=(count1, cid, url))

Log.error(msg=(count1, cid, url))

Log.warning(msg=(count1, cid, url))

生成随机ID

import random

def createId(self, length):

_letter_cases = "abcdefghijklmnopqrstuvwxyz"

_upper_cases = _letter_cases.upper()

_numbers = ''.join(map(str, range(0, 10)))

init_chars = ''.join((_letter_cases, _upper_cases, _numbers))

result = ""

for i in range(length):

result = result + (random.choice(init_chars))

return result

将浏览器的Headers转换为字典

def format_headers(string) -> dict:

"""

将在Chrome上复制下来的浏览器UA格式化成字典,以 为切割点

:param string: 使用三引号的字符串

:return:

"""

string = string.strip().split(' ')

new_headers = {}

for key_value in string:

key_value_list = key_value.split(':')

if len(key_value_list) > 2:

new_headers.update({key_value_list[0]: ':'.join(key_value_list[1::])})

else:

new_headers.update({key_value_list[0]: key_value_list[1]})

return new_headers

62进制数与10进制转换

def encode_b64(n):

table = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

result = []

temp = n

if temp < 62:

result.append(table[temp])

else:

while 0 < temp:

result.append(table[temp % 62])

temp = temp // 62

return ''.join([x for x in reversed(result)])

def decode_b64(str):

table = {"0": 0, "1": 1, "2": 2, "3": 3, "4": 4, "5": 5,

"6": 6, "7": 7, "8": 8, "9": 9,

"a": 10, "b": 11, "c": 12, "d": 13, "e": 14, "f": 15, "g": 16,

"h": 17, "i": 18, "j": 19, "k": 20, "l": 21, "m": 22, "n": 23,

"o": 24, "p": 25, "q": 26, "r": 27, "s": 28, "t": 29, "u": 30,

"v": 31, "w": 32, "x": 33, "y": 34, "z": 35,

"A": 36, "B": 37, "C": 38, "D": 39, "E": 40, "F": 41, "G": 42,

"H": 43, "I": 44, "J": 45, "K": 46, "L": 47, "M": 48, "N": 49,

"O": 50, "P": 51, "Q": 52, "R": 53, "S": 54, "T": 55, "U": 56,

"V": 57, "W": 58, "X": 59, "Y": 60, "Z": 61,

}

result = 0

for i in range(len(str)):

result *= 62

result += table[str[i]]

return result

#补齐位数,将原有的字符串补齐至6位字符串

def fill_zero(str1):

if len(str1) < 6:

zero_str = ""

for i in range(6-len(str1)):

zero_str += '0'

result = zero_str + str1

return result

print(decode_b64(fill_zero(encode_b64(1000))))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值