1.计时
import time
starttime = time.time()
print('计时: ', round(time.time() - starttime, 0), '秒', end="\r\n")
2.读文件
with open('pi_digits.txt') as f:
# readline()每一次读取一行数据,并指向该行末尾
line1 = f.readline() # 读取第一行数据(此时已经指向第一行末尾)
line2 = f.readline() # 从上一次读取末尾开始读取(第二行)
print line1.rstrip()
print line2.rstrip()
3.opencv读图片并压缩显示
import cv2
img=cv2.imread('50-50.jpg')
img2=cv2.resize(img,(150,150))
cv2.imshow('img',img2)
cv2.waitKey()
4.多线程,(glob图片遍历,文件是否存在,文件名获取,线程传参)
查看ubuntu cpu核数:cat /proc/cpuinfo |grep "cores"|uniq
import ScalingAttack as sa
from PIL import Image
import glob,os
from multiprocessing import Pool
def process_run(i,im,filename):
source_image= Image.open(im)
target_image = Image.open("x.jpg")
sa.implement_attack(source_image, target_image,filename)
print(i,filename)
if __name__ == '__main__':
images=glob.glob('images/*.jpg')
p=Pool(4)
for i,im in enumerate(images):
filename=im.split('/')[-1]
if not(os.path.exists("imagenew/"+filename)):
p.apply_async(process_run,args=(i,im,filename))
else:
print(str(i)+'end')
p.close()
p.join()
5.opencv 图片镜像和转置
import cv2
img = cv2.imread("50.jpg")
cv2.imshow("yuan", img)
img1 = cv2.flip(img,0) #镜像
img1 = cv2.flip(img1,-1) #镜像
#img1 = cv2.flip(img1,-1)
'''
参数2 必选参数。用于指定镜像翻转的类型,其中0表示绕×轴正直翻转,即垂直镜像翻转;1表示绕y轴翻转,即水平镜像翻转;-1表示绕×轴、y轴两个轴翻转,即对角镜像翻转。
参数3 可选参数。用于设置输出数组,即镜像翻转后的图像数据,默认为与输入图像数组大小和类型都相同的数组。
'''
image=cv2.transpose(img)
cv2.imshow('dst',img1)
cv2.imshow('image',image)
cv2.waitKey(0)
6.logger
import os
import logging
import re
from logging.handlers import TimedRotatingFileHandler
def setup_log(log_name):
# 创建logger对象。传入logger名字
logger = logging.getLogger(log_name)
log_path = os.path.join("./log_save",log_name)
# 设置日志记录等级
logger.setLevel(logging.INFO)
# interval 滚动周期,
# when="MIDNIGHT", interval=1 表示每天0点为更新点,每天生成一个文件
# backupCount 表示日志保存个数
file_handler = TimedRotatingFileHandler(
filename=log_path, when="MIDNIGHT", interval=1, backupCount=7
)
# filename="mylog" suffix设置,会生成文件名为mylog.2020-02-25.log
file_handler.suffix = "%Y-%m-%d.log"
# extMatch是编译好正则表达式,用于匹配日志文件名后缀
# 需要注意的是suffix和extMatch一定要匹配的上,如果不匹配,过期日志不会被删除。
file_handler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}.log$")
# 定义日志输出格式
file_handler.setFormatter(
logging.Formatter(
"[%(asctime)s] [%(process)d] [%(levelname)s] - %(module)s.%(funcName)s (%(filename)s:%(lineno)d) - %(message)s"
)
)
logger.addHandler(file_handler)
return logger
if __name__ == "__main__":
logger = setup_log("mylog")
logger.info("this is info message")
logger.warning("this is a warning message")
try:
int("xjk")
except ValueError as e:
logger.error(e)
# 如果其他py文件想使用此配置日志,只需 logging.getLogger(日志的名字) 即可