
Python
文章平均质量分 56
kongxx
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
使用Paramiko库sftp远程主机上传下载文件
前一篇文章说了怎样通过 Paramiko 来 SSH 到远程主机执行命令,今天看看怎样通过 Paramiko 使用 SFTP 来传输文件。import paramikotransport = paramiko.Transport((<host>, 22))transport.connect(username=<username>, password=<pas...原创 2019-12-29 14:51:50 · 606 阅读 · 0 评论 -
使用Paramiko库ssh远程主机
安装pip install paramiko基于用户名密码的连接import paramikossh = paramiko.SSHClient()# 允许连接不在 know_hosts 文件中的主机ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(<host>, 22, &l...原创 2019-12-29 14:49:32 · 505 阅读 · 0 评论 -
Python复杂对象转JSON
Python复杂对象转JSON在Python对于简单的对象转json还是比较简单的,如下:import jsond = {'a': 'aaa', 'b': ['b1', 'b2', 'b3'], 'c': 100}json_str = json.dumps(d)print json_str对于复杂对象,可以使用下面的方法来实现,比如:import jsonclass Customer:原创 2016-06-02 09:15:55 · 16917 阅读 · 5 评论 -
Pyinstaller ERROR: Assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none not found
Pyinstaller ERROR: Assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none not found问题描述今天在windows7上用pyinstaller打包应用程序的时候,出现下面错误ERROR: Assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0原创 2017-03-13 08:05:56 · 2375 阅读 · 0 评论 -
Python Socket编程
Python Socket编程在使用Python做socket编程时,由于需要使用阻塞(默认)的方式来读取数据流,此时对于数据的结束每次都需要自己处理,太麻烦。并且网上也没找到太好的封装,所以就自己写了个简单的封装。封装思路 1. 客户端每次请求均发送一个 SocketRequest 对象,其中封装具体的数据,这里使用json。对于要发送的数据,会自动添加一个结束符标识(EOF = ‘0x00’)原创 2017-03-22 21:39:15 · 2796 阅读 · 0 评论 -
Python制作Windows系统服务
Python制作Windows系统服务最近有个Python程序需要安装并作为Windows系统服务来运行,过程中碰到一些坑,整理了一下。Python服务类首先Python程序需要调用一些Windows系统API才能作为系统服务,具体内容如下:#!/usr/bin/env python# -*- coding: utf-8 -*-import sysimport timeimport win32原创 2017-03-23 09:27:39 · 12488 阅读 · 3 评论 -
Python中动态创建类实例
Python中动态创建类实例简介在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢?其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模块。如下:def createInstance(module_name, class_name, *args, **kwargs): module_meta = __im原创 2017-03-24 09:15:43 · 14365 阅读 · 1 评论 -
Python resource module RLIMIT_RSS not work
Python resource module RLIMIT_RSS not work在使用resource设置当前进程的MEM_LIMIT的时候, 发现在我的CentOS6x和7x上都work了, 测试代码如下:#!/usr/bin/python# -*- coding: utf-8 -*-import sysimport timeimport resourceresource.setrli原创 2017-03-27 09:26:03 · 976 阅读 · 0 评论 -
Windows平台使用Python切换用户运行程序
Windows平台使用Python切换用户运行程序在Windows平台,如果需要以某个指定用户来运行程序,此时可以通过使用 Windows CreateProcessAsUser API来实现。但是要实现这个功能首先需要有要切换用户的用户名和密码。import psutilimport win32processimport win32securityimport win32conimport原创 2017-04-20 09:31:49 · 5386 阅读 · 1 评论 -
Windows上使用Python给用户增加或删除安全策略
Windows上使用Python给用户增加或删除安全策略在使用Python在 Windows 平台上开发的时候, 有时候我们需要动态增加或删除用户的某些访问策略, 此时我们可以通过LsaAddAccountRights 和LsaRemoveAccountRights API来实现。比如,我们要给用户分配SE_SERVICE_LOGON_NAME安全策略try: user = 'admin'原创 2017-04-16 21:38:48 · 3388 阅读 · 0 评论 -
Error: PyInstaller for Python 2.6+ on Windows needs pywin32.
Error: PyInstaller for Python 2.6+ on Windows needs pywin32.问题说明今天在创建一个windows平台的python打包环境时,在使用pyinstaller打包时遇到如下错误:Error: PyInstaller for Python 2.6+ on Windows needs pywin32.Please install from htt原创 2017-03-09 13:11:30 · 2161 阅读 · 0 评论 -
CentOS7.2上Fabric报错ValueError: CTR mode needs counter parameter, not IV
CentOS7.2上Fabric报错ValueError: CTR mode needs counter parameter, not IV问题描述:在CentOS7.2上运行Fabric报下面的错误 File "/usr/lib/python2.7/site-packages/fabric/network.py", line 109, in __getitem__ self.connec原创 2017-02-10 13:05:55 · 4611 阅读 · 0 评论 -
使用functools模块wrap方法装饰函数
使用functools模块wrap方法装饰函数今天无意间看到Python中的functools模块,发现使用这个模块的wraps()可以实现一些类似拦截器的功能,比如:包装异常,隐藏异常,打印日志,统计函数使用时间等。下面就通过几个代码片段来看看具体使用方法:包装异常#!/usr/bin/env python# -*- coding: utf-8 -*-import functoolsdef原创 2016-06-13 08:47:53 · 8776 阅读 · 1 评论 -
Python小工具之消耗系统指定大小内存
Python小工具之消耗系统指定大小内存工作中需要根据某个应用程序具体吃了多少内存来决定执行某些操作,所以需要写个小工具来模拟应用程序使用内存情况,下面是我写的一个Python脚本的实现。#!/usr/bin/python# -*- coding: utf-8 -*-import sysimport reimport timedef print_help(): print 'Usag原创 2016-06-14 08:51:32 · 7434 阅读 · 0 评论 -
Python中获取某个用户对某个文件或目录的访问权限
Python中获取某个用户对某个文件或目录的访问权限在Python中我们通常可以使用os.access()函数来获取当前用户对某个文件或目录是否有某种权限,但是要获取某个用户对某个文件或目录是否有某种权限python中没有很好的方法直接获取,因此我写了个函数使用stat和pwd模块来实现这一功能。#!/usr/bin/env python# -*- coding: utf-8 -*-import原创 2016-06-17 09:00:28 · 9775 阅读 · 0 评论 -
Python判断某个用户对某个文件的权限
Python判断某个用户对某个文件的权限在Python我们要判断一个文件对当前用户有没有读、写、执行权限,我们通常可以使用os.access函数来实现,比如:# 判断读权限os.access(<my file>, os.R_OK)# 判断写权限os.access(<my file>, os.W_OK)# 判断执行权限os.access(<my file>, os.X_OK)# 判断读、写原创 2016-07-18 09:37:20 · 8677 阅读 · 0 评论 -
Python性能分析器Profile
Python性能分析器Profile在使用Python进行开发的过程中,有时候我们需要对Python程序的执行性能进行分析,此时我们就需要用到Python的性能分析工具,这里我就简单说说Python中的profile和pstats库。下面是一个测试程序import osdef a(): sum = 0 for i in range(1, 10001): sum +=原创 2016-08-16 09:01:36 · 4471 阅读 · 0 评论 -
Ubuntu16.04的Python virtualenv问题
Ubuntu16.04的Python virtualenv问题问题描述最新release的Ubuntu16.04想让大家都把Python环境都迁移到Python3上,但是目前python2还是主流,还有很多第三方库是基于Python2来实现的,所以我想还是有很多人和我一样,开发和生产环境必须要使用Python2。而在系统上安装virtualenv基本是每个开发人员都必须的,但是这次在Ubuntu16原创 2016-07-08 09:19:59 · 3608 阅读 · 0 评论 -
Python使用Bottle来提供一个简单的web服务
Python使用Bottle来提供一个简单的web服务介绍今天有个不正经的需求,就是要快速做一个restful api的性能测试,要求测试在海量作业数据的情况下客户端分页获取所有作业的性能。因为只是一个小的的测试工作,所以就想到了Bottle框架作为Web服务器,这里就简单说说怎样使用Bottle框架。安装pip install bottle启动服务运行下面的python脚本即可启动一个Web服务。原创 2016-08-15 09:03:55 · 8571 阅读 · 1 评论 -
Django自定义访问日志模块
Django自定义访问日志模块在Django默认没有访问日志模块,但是我们可以通过Django的Middleware来实现一个自己的访问日志模块。首先在Django的工程下创建一个middleware.py文件,内容如下:#!/usr/bin/env python# -*- coding: utf-8 -*-import timeclass AccessMiddleware(object):原创 2016-10-16 20:18:16 · 2922 阅读 · 0 评论 -
Windows上使用Python增加或删除权限
Windows上使用Python增加或删除权限在使用Python在 Windows 平台上开发的时候, 有时候我们需要动态增加或删除用户的某些权限, 此时我们可以通过 AdjustTokenPrivileges API 来实现。比如,我们要给用户分配 SE_TCB_NAME 权限flags = win32security.TOKEN_ADJUST_PRIVILEGES | win32security原创 2017-04-17 09:07:45 · 4175 阅读 · 0 评论 -
Python中使用operator模块实现对象的多级排序
Python中使用operator模块实现对象的多级排序今天碰到一个小的排序问题,需要按嵌套对象的多个属性来排序,于是发现了python里的operator模块和sorted函数组合可以实现这个功能。比如我有如下的类关系,A对象引用了一个B对象,class A(object): def __init__(self, b): self.b = b def __str__原创 2017-05-03 14:10:46 · 1349 阅读 · 1 评论 -
Python2.x设置命令执行的超时时间
在Python2.x中的几个用来执行命令行的库或函数在执行命令是均不能设置一个命令执行的超时时间,用来在命令执行时间超时时终端这个命令的执行,这个功能在3.x(?)中解决了,但是在2.x还是只能自己实现。下面就简单实现了一个版本:import subprocessfrom threading import Timerdef call(args, timeout): p = subproc原创 2017-09-15 09:49:33 · 4607 阅读 · 0 评论 -
auto-sklearn环境报错 AttributeError: module 'pandas' has no attribute 'core'
安装了最新的 auto-sklearn 库,运行例子是报错AttributeError: module 'pandas' has no attribute 'core'最后发现是 pandas 库的版本问题。安装 auto-sklearn 时安装的 pandas 版本是 0.25.1,这个版本有问题,需要安装 0.22 版的 pandas。重新安装 pandaspip install p...原创 2019-09-09 08:41:36 · 4221 阅读 · 0 评论 -
基于jieba库实现中文词频统计
要实现中文分词功能,大家基本上都是在使用 jieba 这个库来实现,下面就看看怎样实现一个简单文本分词功能。安装python的工具,安装当然是使用pip安装了。pip install jieba使用先看一个小例子,下面的代码是从一个文本文件中分词并统计出现频率最高的10个单词,并打印到控制台。#!/usr/bin/env python# -*- coding: utf-8 -*-...原创 2018-12-19 20:39:18 · 11308 阅读 · 1 评论 -
使用pdfminer解析pdf文件
最近要做个从 pdf 文件中抽取文本内容的工具,大概查了一下 python 里可以使用 pdfminer 来实现。下面就看看怎样使用吧。安装python的工具,安装当然是使用pip安装了。pip install pdfminer命令行方式为了使用方便,pdfminer 提供了一个命令行工具来直接转换pdf文件,使用方法如下:pdf2txt.py <path_to_pdf_fil...原创 2018-12-19 20:38:03 · 5012 阅读 · 0 评论 -
Python运行时动态查看进程内部信息
接前两篇“运行时查看线程信息”的博客,我在想,既然我可以随时打印线程信息,那么我是不是可以随时打印进程内部的其它信息呢?比如,实时查看一些对象属性等,这样可以帮助我们在不重新启动应用程序的情况下就可以观察进程的执行状态。(这里暂时不考虑那些使用第三方库或工具的情况)根据这个想法,查看了一下python的动态加载模块的方法,感觉这个想法还是比较靠谱,应该可以实现,所以动手写了个小测试验证了一把。...原创 2018-04-25 08:39:49 · 5716 阅读 · 0 评论 -
Python3运行时查看线程信息
前一篇文章说了一下在是用Python2的情况下怎样查看运行时线程信息,今天查资料的时候发现,原来在Python3中引入了 faulthandler 模块,可以简化我们很多工作,甚至,如果不需要保持进程继续运行的情况下可以不用修改我们已有的代码。具体 faulthandler 模块的使用,可以参考: faulthandler https://docs.python.org/3/library...原创 2018-03-27 12:52:28 · 17372 阅读 · 1 评论 -
Python2运行时查看线程信息
今天遇见一个 Python 问题,在测试环境中发现用 Python2.7.10 写的程序有时候会慢慢变慢,在使用 “pstack ” 查看进程的时候发现起了很多的线程,并且越来越多,这肯定是程序有问题,但是使用 pstack 命令看不到具体每个线程是在做什么,于是我就想是不是可以在不影响进程运行的情况下随时查看每个线程都在干什么。于是乎,我大致想了一下 1. 可以使用 signal 模块在处...原创 2018-03-26 23:19:14 · 2582 阅读 · 1 评论 -
使用django-crontab实现定时任务
今天打算在自己的 Django 应用中添加一个定时任务来定时执行一些定期检查的功能,因此想到了使用 django-crontab 插件可以满足我的需求,下面就是这个插件的使用方法。首先使用pip安装 django-crontab 插件pip install django-crontab创建要定期执行的脚本和方法,这里假设脚本名称叫cron.py,内容如下:#!/usr/bin/...原创 2018-02-25 21:22:58 · 1252 阅读 · 0 评论 -
Python使用functools实现注解同步方法
在 Python 中没有类似 Java 中使用的 synchronized 关键字来同步方法,因此在 Python 中要实现同步方法,通常我们是使用 threading.Lock() 来实现。在进入函数的地方获取锁,出函数的时候释放锁,这样实现代码看起好非常不好看。另外网上也有人给出了其它几种实现方式,但看起来都不美气。今天我在做项目的时候突然想到是不是可以通过 functools 来实现通过原创 2018-02-06 08:45:28 · 2253 阅读 · 0 评论 -
Windows上使用Python绑定CPU
在 Windows 平台上,有时候我们想让自己的程序在指定的CPU上运行,此时我看可以通过下面几个API来实现win32process.SetProcessAffinityMask(hProcess, mask) - 绑定进程到CPUwin32api.GetSystemInfo()[5] - 查询当前机器有几个CPUwin32api.GetCurrentProcess() - 获取当前进原创 2018-02-05 09:21:38 · 2790 阅读 · 0 评论 -
使用 Anaconda 管理 Python 环境
介绍Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供python环境管理和包管理功能,可以很方便在多个版本python之间切换和管理第三方包,Anaconda 使用 conda 来进行 Python 环境管理和包管理。安装可以从 Anaconda 官方网站下载 https://www.anaconda.com/。这里安装的是Linux版本原创 2017-10-20 09:20:52 · 4539 阅读 · 0 评论 -
使用 pyenv 管理多个版本 python 环境
随着同时开发的项目越来越多,需要不停的在各个不同版本的 python 环境之间切换,所以想到了pyenv。以前一直使用的 virtualenv只能管理同一个 python 版本下第三方库的版本,但是对于这种需要在多个不同版本之间切换的 case,就只能使用 pyenv 了。安装运行下面的命令会自动下载安装$ curl -L https://raw.githubusercontent.com/pyen原创 2017-10-19 09:16:38 · 2379 阅读 · 0 评论 -
Python进程间通信之命名管道(Windows)
前面文章说了一下 Linux 命名管道的实现,今天看看 Windows 上我们怎么实现。在 Windows 上的命名管道主要是通过调用 win32 api 的以下方法来实现的: - win32pipe.CreateNamedPipe() - win32pipe.ConnectNamedPipe() - win32file.ReadFile() - win32file.WriteFile()下原创 2017-09-20 09:36:21 · 8540 阅读 · 0 评论 -
Python进程间通信之共享内存
前一篇博客说了怎样通过命名管道实现进程间通信,但是要在windows是使用命名管道,需要使用python调研windows api,太麻烦,于是想到是不是可以通过共享内存的方式来实现。查了一下,Python中可以使用mmap模块来实现这一功能。Python中的mmap模块是通过映射同一个普通文件实现共享内存的。文件被映射到进程地址空间后,进程可以像访问内存一样对文件进行访问。不过,mmap在linu原创 2017-09-01 09:24:14 · 23091 阅读 · 1 评论 -
Python进程间通信之命名管道
管道是一种简单的FIFO通信信道,它是单向通信的。 通常启动进程创建一个管道,然后这个进程创建一个或者多个进程子进程接受管道信息,由于管道是单向通信,所以经常需要创建两个管道来实现双向通信。命名管道是对传统管道的扩展,默认的管道是匿名管道,只在程序运行时存在;而命名管道是持久化的,当不需要时需要删除它。命名管道使用文件系统,由mkfifo()方法创建。一旦创建了,两个独立的进程都可以访问它,一个读,原创 2017-08-28 15:46:59 · 10516 阅读 · 7 评论 -
Redis实现类似同步方法调用的功能(二)
接上一篇,这么干纯粹是为了好玩。上一篇的博客中的例子只能处理一个Server对一个Client的情况,今天修改了一版,可以支持一个Server对多个Client。实现方式就是Server每派发一个动作就扔到一个线程里去,Client也类似每收到一个数据,就起一个线程去做自己的逻辑。这样看起来就有点像socket变成了。import redisimport timeimport jsonimpo原创 2017-08-19 09:51:42 · 694 阅读 · 0 评论 -
Redis实现类似同步方法调用的功能(一)
首先声明,这么干纯粹是为了好玩。通常我们用Redis主要是为了存储一些数据,由于数据在内存里,所以查询更新很快。同时我们也可以利用 Pub/Sub 功能来实现消息发布/订阅。但是今天我们来说说怎么通过Redis的list来实现 Server - Client 的同步通信。具体需求Client 端运行后监听 Server 端派发的请求,然后执行一些操作,并将结果返回给 Server 端。实现想法利用原创 2017-08-19 09:50:19 · 2456 阅读 · 0 评论 -
Django 中针对基于类的视图添加 csrf_exempt
在Django中对于基于函数的视图我们可以 @csrf_exempt 注解来标识一个视图可以被跨域访问。那么对于基于类的视图,我们应该怎么办呢?简单来说可以有两种访问来解决方法一:在类的 dispatch 方法上使用 @csrf_exemptfrom django.views.decorators.csrf import csrf_exemptclass MyView(View): def g原创 2017-08-17 12:57:45 · 22772 阅读 · 3 评论