Python
風の唄を聴け
这个作者很懒,什么都没留下…
展开
-
[Spider] ‘gbk‘ codec can‘t decode byte 0xaa in position 29123: illegal multibyte sequence
写爬虫时需要事先知道要爬网页的编码,通过document.charset命令可以查询页面编码。这里遇到一个问题,虽然查询的结果是GBK,但使用GBK解码时却报了如题所示的错误。从报错的内容可以看出是页面中部分字符无法识别导致的,解决方法有两个:将GBK改为gb18030,gb18030编码包含更多的字符, 所以可以处理部分GBK无法处理的字符requests.get(url).content.decode('gb18030')在解码时加入errors='ignore',跳过出现错误的字符,原创 2020-08-19 11:05:37 · 724 阅读 · 0 评论 -
[Python] 基于 Flask + OnlyOffice 实现 Office 文件在线查看
1. 实现思路安装并启动 OnlyOffice构建一个文档展示页面通过 Flask 提供的服务访问文档页面通过 Falsk 向文档页面传入要展示的文件信息在文档页面里发送请求获得要展示的文件内容(由 Flask 返回)文档内容通过 OnlyOffice 展示在文档页面中2. 启动 OnlyOffice官方文档: https://helpcenter.onlyoffice.com/installation/docs-community-install-docker.aspx?_ga=2.原创 2021-07-17 15:41:39 · 2974 阅读 · 0 评论 -
[Python/Vue] 基于 Flask + Vue 实现前端文件上传及下载
目录1. 文件上传1.1 前端代码1.2 后端代码2. 文件下载2.1 前端代码2.2 后端代码1. 文件上传说明使用 ElementUI 的 el-upload 组件发送的文件上传请求中包含请求头和请求参数后端接收到文件并存储到指定路径上传成功后前端给出提示信息1.1 前端代码<template> <div class="app-container"> <el-upload class="upload-demo" :sh原创 2021-07-17 15:13:22 · 6054 阅读 · 3 评论 -
[Python] 使用import_module动态导入模块和方法
假设有两个模块 module_a 和 module_b, 两个模块各包含一些方法, 然后现在有一个需求: 尝试从 module_a 中导入 func_1, 若 module_a 中不包含 func_1, 则从 module_b 导入 func_1, 若两个模块均不包含 func_1 抛出错误.这个问题涉及到方法的动态导入, 使用类中的函数重载可以很容易解决这个问题, 在不使用类的情况下, 可以考虑使用 importlib 模块的 import_module 这个方法, 其实我们在 python 文件的开头原创 2020-12-31 14:14:27 · 711 阅读 · 0 评论 -
[OCR/Python] 图片文字提取 (百度vs讯飞)
本文主要介绍百度和讯飞的OCR调用方法, 从结果来看百度的效果要比讯飞好很多, 不过讯飞给的免费流量比百度多很多.一. 百度OCR大致流程:进入百度智能云官网, 注册并登录在产品服务中选择"文字识别"在"应用列表"中创建应用, 并记录下 API Key 和 Secret Key将 API Key 和 Secret Key, 已经要提取文字的图片传入下面的函数即可获得提取出的文字import sysimport jsonimport base64from urllib.reques原创 2020-11-15 20:45:23 · 3027 阅读 · 0 评论 -
[Centos] Boost.Python 的安装及使用
编译环境Python: 3.6.8gcc: 4.8.5Boost: 1.661. 安装 gcc 和 python36-devel安装 gccsudo yum install gcc安装 python36-develsudo yum -y install python36-devel安装这个包的作用是避免出现找不到python的部分头文件的错误, 如下图2. 下载编译 Boost下载&解压# 下载wget https://dl.bintray.com/b原创 2020-11-05 22:43:35 · 1045 阅读 · 0 评论 -
[Centos] pyconfig.h:没有那个文件或目录
报错原因出现这个错误的原因是 /usr/include/python3.6m 目录下缺失文件 pyconfig.h 导致的, 报错时该目录下只有文件 pyconfig-64.h解决方法解决方法是安装模块 python36-develsudo yum -y install python36-devel安装完成之后会发现目录 /usr/include/python3.6m/ 下多了很多头文件, 其中就包括文件 pyconfig.h...原创 2020-11-04 15:37:42 · 3905 阅读 · 0 评论 -
[Oracle] Python多进程并发报错: ORA-01001: invalid cursor
问题描述:使用Python的multiprocess和SQLAlchemy模块多进程访问Oracle时, 遇到错误 ORA-01001: invalid cursor问题分析:从报错信息来看, 猜测是数据库连接池的管理出现了错误, 当进程访问Oracle时, 会通过SQLAlchemy与Oracle建立连接, 建立连接的过程是"打开游标 - 执行SQL语句 - 关闭游标", 单个进程使用SQLAlchemy没有问题, 但当有多个进程时, 猜测SQLAlchemy可能是无法将每个进程的ID与这个进程打开原创 2020-09-01 08:26:04 · 1515 阅读 · 0 评论 -
[Python] 读写 zip/hdf/rar/targz/bcolz/7z
1. 读写 zipimport zipfiledef ls_zip(zip_file_path): '''获取zip压缩文件夹dir''' _zip = zipfile.ZipFile(zip_file_path) zip_dir = _zip.namelist() return zip_dirdef read_zip(zip_file_path, cs...原创 2020-04-01 11:54:24 · 912 阅读 · 0 评论 -
[Python] 使用 Pandas 向量化处理时间戳
1. 字符串日期 >> 时间戳 (单个)对于单个的字符串格式的日期, 可以使用time模块得到其时间戳date = '1970-01-01 10:00:00'time.mktime(time.strptime(date, '%Y-%m-%d %H:%M:%S'))或者使用numpydate = '1970-01-01 10:00:00'(np.datetime64(dat...原创 2020-03-25 15:44:55 · 1459 阅读 · 0 评论 -
[Spark] 自定义函数 udf & pandas_udf
首先引入所需模块from pyspark.conf import SparkConffrom pyspark.sql import SparkSessionfrom pyspark.sql.functions import udf, pandas_udf, PandasUDFTypeconf=SparkConf()conf.setAppName('my-app')conf.set('...原创 2020-03-05 16:45:38 · 999 阅读 · 0 评论 -
[Python] 读/写/查询 .bcolz 文件
1. 读取将 .bcolz 文件读为 DataFrameimport bcolzf = bcolz.open('/tmp/test.bcolz')df = f.todataframe(2. 写入方法一: bcolz.fromiterct2 = bcolz.fromiter( ((i,i*i) for i in range(N)), dtype="i4,f8", ...原创 2019-11-15 18:27:06 · 687 阅读 · 0 评论 -
[Python] 安装 bcolz 模块
1. 方法一根据米筐提供的方法, 可以通过下面的方式安装 bcolz# 镜像加速pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple# 更新 pip/setuptoolspip3 install -U pip setuptools cython -i https://pypi.douban.com/simple# 安装 bco...原创 2019-11-14 15:58:16 · 3975 阅读 · 1 评论 -
[Spark] Spark/PySpark 的安装及配置
1. 安装 JAVA详细步骤可以参考: [Linux] 安装 JAVA2. 安装 Spark下载单机版 Spark, 当前最新版本 spark-2.4.4-bin-hadoop2.7.tgzwget http://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.4.4/spark-2.4.4-bin-hadoop2.7.tgz解...原创 2019-11-14 13:27:34 · 1076 阅读 · 0 评论 -
[Python] 读取 rar/zip 压缩文件
一. 读取 rar 文件Python 中 python-unrar 模块依赖于 UnRAR library, 所有先安装 UnRAR library1. 安装 UnRAR library在官网可以找到各种版本的安装包, 下面给出 Linux 版安装的说明$ cd ~$ wget http://www.rarlab.com/rar/unrarsrc-5.2.6.tar.gz$ tar -...原创 2019-10-29 19:23:12 · 9075 阅读 · 3 评论 -
[Python] Pandas 中 read_csv 与 read_hdf 速度对比
1. 速度对比一般情况下, 我们习惯使用 Pandas 中的 read_csv 函数来读取 CSV 文件, 但当 CSV 文件比较大时, read_csv 的速度会显得有点慢, 这时可以考虑使用 HDF5 格式来存储数据, 下面是两个函数所用时间的对比通过对比可以发现, 随着文件大小的增加, read_hdf 的优势越来越大, 但是当文件小于 15MB 时, read_hdf 的速度开始慢...原创 2019-10-28 15:17:50 · 4032 阅读 · 0 评论 -
[Oracle] SQlAlchemy 连接 Oracle 数据库问题汇总
一. 创建 Oracle 数据库用户首先在 Oracle 中创建一个用户用于访问数据库创建用户, 这里需要注意的是, 为了账户能够正常登陆, 用户名前面需要加 “c##”create user c##username identified by password; 赋予新建用户权限grant connect,resource,dba to c##username;二. S...原创 2019-10-26 14:49:58 · 2335 阅读 · 2 评论 -
[SQLAlchemy] 创建: 主键/索引/唯一约束/联合唯一约束/联合主键约束
1. 主键from sqlalchemy import *test = Table( 'test', metadata, Column('id', BigInteger, primary_key=True))2. 索引from sqlalchemy import *test = Table( 'test', metadata, Column('id', BigIntege...原创 2019-10-21 16:50:40 · 13550 阅读 · 0 评论 -
[linux] 安装 Anaconda3
1. 下载安装包使用清华源下载安装包wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.3.1-Linux-x86_64.sh2. 安装在安装包所在目录下, 运行bash Anaconda3-5.3.1-Linux-x86_64.sh 安装过程中出现只需要点击 Enter 建和输入 yes 即...原创 2019-10-17 15:46:26 · 222 阅读 · 0 评论 -
[Python] eval/exec 将字符串当做代码执行
eval/exec 这两个函数可以将字符串解析为代码并执行, 这里记录一下它们之间的区别区别一:eval 解析变量和表达式, 而 exec 解析语句, 比如a = 1print(eval(a)) # 打印变量 a 的值print(eval('a+1')) # 打印1+1的计算结果2exec('a=1') # 为变量 a 赋值print(a) ...原创 2019-10-17 14:22:46 · 1663 阅读 · 0 评论 -
[Python] SQLAlchemy 批量创建数据库表字段
使用SQLAlchemy可以很方便地创建数据库表, 但是当表的字段很多时, 需要些很多重复的代码, 为了更加便捷地使用SQLAlchemy创建大表, 下面将使用eval函数简化字段输入过程.假设一张表有100个字段, 字段名是c1, c2, …c100. 创建这样一张表大致需要以下三步: 1. 通过循环拼接出创建100个列所需的代码字符串, 2. 使用拼接好的列构建出创建表需要的代码字符串, 3...原创 2019-10-15 14:05:36 · 1161 阅读 · 0 评论 -
[Lunix] 将 Python 任务设为守护进程(二)
接着上一篇文章 将 Python 任务设为守护进程(一),当python任务中包含相对路径引用时,在service文件中执行python文件会报错,为了解决这个问题,还需借助shell脚本的力量。假设项目存在/root/python路径中,且必须运行该目录下的main.py文件才能运行该项目,那么可以进行以下操作:1. 创建shell脚本在项目目录中创建shell脚本vim /root/p...原创 2019-09-16 17:41:46 · 163 阅读 · 0 评论 -
[Linux] 修改系统默认 Python 版本
Centos7 默认使用Python2.7版本,安装Python3之后要将系统默认的Python指向新版本,需进行以下几步操作1. 查看当前状况Python 的执行文件放在 /usr/bin 目录下,使用 ls -l /usr/bin/python 查看其当前指向的 Python 版本2.删除python软链接想要改变执行文件指向,需要先删除已有的软链接,删除命令为rm -rf /us...原创 2019-09-19 14:53:05 · 508 阅读 · 0 评论 -
[Python] 连接 SQL Server 的两种方式
1. 通过 pymssql 连接首先创建连接import pymssqlconn = pymssql.connect(host='xxx.xxx.xxx.xxx', user='sa', password='xxxxxxx', database='dbN...原创 2019-09-26 19:12:19 · 764 阅读 · 0 评论 -
[Python] 字符串与 hex 之间的相互转换
1. 字符串转 hexhex >> 二进制 >> 字符串import binasciidef hex_to_str(hexadecimal): str_bin = binascii.unhexlify(hexadecimal) return str_bin.decode('utf-8')2. hex 转字符串字符串 >> 二进制...原创 2019-06-03 16:36:45 · 33457 阅读 · 0 评论 -
Python 文件夹间的函数调用
Python 文件夹间的函数调用假设文件夹 Folder_A 中有文件 file_a,文件夹 Folder_B 中有文件 file_b。文件 file_a 中有一个函数 test(),如何在 file_b 中调用这个函数呢?首先需要知道的是,Python 解释器会在当前执行文件所在的文件夹内搜索文件,由于 Python 的这个特性,一个文件可以直接调用同目录下的另一个文件,但不能直接调用另一个文...原创 2019-01-03 17:59:17 · 1085 阅读 · 0 评论 -
[Lunix] 将 Python 任务设为守护进程(一)
1. 安装systemdUbuntu: sudo apt-get install systemdCentos: sudo yum install systemd2. 配置文件所在目录Ubuntu: /etc/systemd/system/Centos: /usr/lib/systemd/system/3. 编写bash脚本文件创建一个bash文件:vim /usr/sbin/s...原创 2019-09-16 15:07:36 · 512 阅读 · 1 评论 -
[Ubuntu] Python3.5升级为Python3.6
1. 添加 Python 安装源sudo add-apt-repository ppa:jonathonf/python-3.62. 更新软件列表:sudo apt-get update3. 安装Python3.6:sudo apt-get install python3.64. 设置Python3.6的优先级:sudo update-alternatives --instal...原创 2019-09-06 17:53:25 · 1222 阅读 · 0 评论 -
[Neo4j] 批量创建日期节点
本文通过 py2neo 来创建创建图数据库节点,节点分为四类:年、月、周和日,关系包含:年到月、月到周、周到日。1. 创建节点from py2neo import Graphfrom py2neo.ogm import GraphObject, Property, RelatedToclass Year(GraphObject): ''' 年节点 ''' ...原创 2019-08-20 15:01:10 · 851 阅读 · 0 评论 -
Pandas 中 apply 和 map 的使用
Pandas 修改数据格式apply() 对DataFrame整列或整行进行操作,比如求和、求最大值和求平均之类的运算applymap()对DataFrame中每一个元素进行操作map() 对DataFrame的单列或者说Series进行操作a. df[cols].round(decimals=2) # 浮点型b. df[cols].map(lambda x:('%.2f...原创 2019-04-08 12:12:29 · 329 阅读 · 0 评论 -
设置和查看 Ubuntu 环境变量
1. 方法一# 设置环境变量export VAR_NAME=value export PATH=$PATH:/path/to/your/dir# 查看环境变量env # 查看全部env | VAR_NAME # 查看某变量2. 方法二借助 Python 的 os 模块 # 设置环境变量 os.environ['环境变量名称']='环境变量值' #其中ke...原创 2019-04-05 15:05:03 · 957 阅读 · 0 评论 -
在 Ubuntu 中运行 Python 文件报错 “Exec format error”
为了解决这个问题,首先在要运行的 Python 文件的第一行加入#! /usr/bin/env python3保存之后再运行会看到另一条报错信息/usr/bin/env: ‘python3\r’: No such file or directory此时需要用 vim 打开该文件,然后依次输入:set ff=unix :wq再次运行应该就没问题了...原创 2019-04-05 14:42:43 · 4220 阅读 · 0 评论 -
Python 如何将自定义模块导入系统模块
'''#1. 目录结构myutils —— setup.py | —— src —— __init__.py | —— myutils —— a.py | —— b.py | —— __init__.py'''#2. 在 set...原创 2019-03-27 12:08:54 · 543 阅读 · 0 评论 -
Python 解析 URL
在 Python3 中,解析URL常用的方法是 urllib.parse 模块中的 urlparse、 parse_qs 和 parse_qsl 三个函数。urlparse 将 url 分割为 scheme、netloc、path、params、query 和 fragment 这几部分,如下图所示:在 urlparse 的基础上,parse_qs 和 parse_qsl 可以获取 url 中...原创 2019-03-30 09:57:20 · 11750 阅读 · 0 评论 -
Python数据分析 ---- ARMA模型
ARMA 模型简介ARMA 模型是研究时间序列的重要方法,由 AR 模型与 MA 模型混合而成。总的来说,AR 模型(自回归模型)是通过分析研究历史数据对当前数据的影响进行建模。MA 模型(移动平均模型)是用过去各个时期的随机干扰或预测误差的线性组合来得到当前预测值。要将 ARMA 模型运用到一组时间序列模型上,大致需要以下几步:ADF 检验平稳化处理定阶模型预测还原预测结果1....原创 2019-02-17 18:53:07 · 17775 阅读 · 2 评论 -
Python 中的多进程和多线程
Python 中的多进程和多线程多进程和多线程是实现多任务及提升任务执行效率的两种常用方法。两者都遵循 Master-Worker 模式,Master 负责分配任务,Worker 负责执行任务。具体来说,多进程由一个主进程与多个子进程构成,而多线程由一个主线程与多个子线程构成。两者的一个主要区别在于:多进程的每个进程创建在不同的内存空间中,而多线程创建在一个进程中。一、 多进程与多线程的优缺点...原创 2018-12-22 14:03:45 · 301 阅读 · 0 评论 -
Python 爬虫 ---- urllib 库
Python 爬虫 — urllib 库Python 的 urllib 库中用于from urllib import requestfrom urllib import parserequest/parse函数1 urlopen函数: 1.1 各参数 url:请求的url。 data:请求的data,如果设置了这个值,那么将变成post请求。 返回值:返回值是一个http.cli...原创 2018-12-14 16:00:55 · 339 阅读 · 1 评论 -
Python 爬虫 ---- Beautiful Soup(二)
Python 爬虫 ---- Beautiful Soup(二)要想解析 Beautiful Soup 对象,首先需要对遍历文档树有所了解。遍历文档树的操作可以分为以下四个部分:一、子节点一个 Tag 可能包含多个字符串或其它的 Tag,这些都是这个 Tag 的子节点。Beautiful Soup 提供了许多操作和遍历子节点的属性,最简单的方法就是告诉它你想获取的 Tag 的 name。如果...原创 2018-12-14 15:57:11 · 288 阅读 · 0 评论 -
Python 爬虫 ---- Beautiful Soup(一)
Python 爬虫 ---- Beautiful Soup(一)假设有下面这样一段 HTML 代码html_doc = &amp;amp;quot;&amp;amp;quot;&amp;amp;quot;&amp;amp;amp;lt;html&amp;amp;amp;gt;&amp;amp;amp;lt;head&amp;amp;amp;gt;&amp;amp;amp;lt原创 2018-12-14 15:09:09 · 263 阅读 · 0 评论 -
如何用 time 模块处理时间数据
time 模块中处理时间数据格式的几种方式在 time 模块中,时间数据主要有三种格式:时间戳(timeStamp)、时间数组(timeStruct)和时间字符串(timeStr)。形式如下图所示:对于这三种格式的数据,时间戳与时间数组之间可以互相转换,时间数组和时间字符串之间可以互相转换,于是以时间数组为媒介,时间戳与时间字符串之间也可以互相转换。下面对这些转换进行具体说明。1. 基本方...原创 2018-11-29 11:49:51 · 559 阅读 · 1 评论