自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

杰瑞的专栏

架构师、脚本语言专家;精通Python、Shell、正则表达式;熟悉Java、C、Tcl、Ruby、Scala、Perl等多种编程语言;在性能,开源,自动化测试方面有非常丰富的经验

  • 博客(622)
  • 资源 (5)
  • 收藏
  • 关注

原创 Python根据内嵌的数字将字符串来排序

有的时候,我们需要将字符串来排序,而该字符串又是有一定规律的,比如上面嵌套了数字,如"file2.txt file11.txt file8.txt file5.txt"排列成"file2.txt file5.txt file8.txt file11.txt",因为Python默认的字符串排序是基于字符ASCII来排序的,一般file11.txt是在file2.txt,如果要实现上面的需求,要如何处...

2018-07-22 19:55:47 4810 2

原创 Python中实现交替作为键和值的来创建字典

有的时候,给定了一个列表,我们需要交替使用列表中的元素作为键和对应值来创建字典,比如下面一个列表>>> lst = ['Jerry', 20, 'Alice', 30, 'Wendy', 40]我们需要将第一个作为键,第二个作为值,依次类推,可以这样:>>> lst = ['Jerry', 20, 'Alice', 30, 'Wendy', 40...

2018-07-22 17:55:36 1091

原创 Python中如何获取字典的子集

如果你有个巨大的字典,字典中的一些键属于一个特定的集合,你想创建一个包含这个键集合及其对应值的新字典,可以有下面解决方案:>>> def sub_dict(dct, keys, default=None):... return dict([(key, dct.get(key, default)) for key in keys])...>>>...

2018-07-22 17:33:28 4400

原创 Python中十进制数学计算

有的时候,在进行十进制计算时,得出的结果并不是我们想要的,比如说:>>> 0.3 / 30.09999999999999999其实我们想得到的是0.1而不是一串浮点数,这个时候就要使用自带的decimal模块>>> import decimal>>> d1 = decimal.Decimal('0.3')>>&...

2018-07-22 16:51:36 1693

原创 find的mindepth和maxdepth组合查找文件

find命令功能很多,参数也多,其中有两个参数mindepth和maxdepth搜索路径的最深和最浅深度,有的时候很有妙用! 比如说要搜索: /root/config.xml的文件;同时在/root/AAA/config.xml,/root/AAA/BBB/config.xml, /root/AAA/BBB/CCC/config.xml....如果只想查找/root/目录下的config....

2018-07-22 12:08:32 2990

原创 Linux中时间戳和时间之间的转换

Unix时间戳(英文为Unix epoch, Unix time, POSIXme 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒一、查看指定时间的时间戳1) 查看当前时间的时间戳$ date +%s14367815272) 查看指定时间的时间戳 $ date -d "2008-01-01 00:00:00" ...

2018-07-22 09:57:12 27513

原创 sed中的反向引用的小例子

如果要颠倒一个字符串的排序,可以使用sed的反向功能,比如要"2017 2016 2018"按次序排列,其他就可以使用反向引用中\2 \1 \3来排序,排列的结果就是"2016 2017 2018"[root@localhost #] echo -e "2017 2016 2018" | sed -e "s/\(.*\) \(.*\) \(.*\)/\2 \1 \3/g""2016 201...

2018-07-22 09:19:10 5996 1

原创 Python3中两字典的合并与更新

在Python3中,如果两个字典进行合并与更新,如两个键中有键相同的话,后者的键=>值对,会替换和更新前者。 可以看看简单示例:>>> D1 = {"a": 1, "b": 2, "c": 3}>>> D2 = {"a": 1, "b": 22, "d": 4}>&g

2018-07-08 11:11:01 3033

原创 Python2 和 3访问MySQL数据库

Python2和3访问MySQL使用的模块不同,2使用MySQLdb模块,而3使用pymysql模块,其他相差不大。Python3连接MySQL数据库代码:import pymysql# 创建一个连接对象,再使用创建游标con = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='1234', db='mysq...

2018-07-01 10:39:20 6164 1

原创 Python在Windows平台修改文件属性

如果要修改Windows上一系列文件的属性,比如设置某些文件为只读,归档,隐藏文件等。PyWin32的win32api模块提供了一个SetFileAttributes函数,正好可以用来完成这种任务.来做一个实验,正常创建文件是可以写的,如果设置了文件为只读文件,就写不了了。>>> import os>>> import win32con>>&gt...

2018-06-30 12:00:44 4560

原创 Pythong求某字符串的子串

有时候需要求某一个字符串的子串,比如说:"abc"的所有子字符串(不依顺序),这个时候可以通过函数来处理:>>> s = "abc">>> def get_sub_string(s):... tmp = []... for i in range(len(s)):... for j in range(i+1, len(s)+...

2018-06-30 11:01:55 2662

原创 Python中for循环变量作用域问题探讨

一直以为Python中for变量在循环中遍历完了就失去作用,其实不然,可以看下面一个例子:>>> i = 1000 # 开始定义一个变量i,值为1000>>> for i in range(4): # 在for循环中使用i作为变量... print(i)...0123>>> j =...

2018-06-30 10:31:02 8546 3

原创 Python当前时间是一年中第几周

Python返回当前时间是一年中第几周有好多种方法方法一:>>> import time>>> print(time.strftime("%W"))26方法二:>>> from datetime import datetime>>> datetime.now().isocalendar() # 今年

2018-06-30 10:07:14 22825 1

原创 Python中的zip函数作用的一个小示例

Python中内置函数zip非常有用,使用该函数能将列表序列,依次取出组成一个由元祖组成的列表>>> help(zip)Help on built-in function zip in module __builtin__:zip(...) zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]...

2018-06-30 08:48:57 924

原创 Python中字符串中zfill在某种场合的作用

有时候需要求某个10进制的8位二进制,这个时候使用bin(int),来转换:>>> bin(15)'0b1111'这个时候前面自动加上0b,如果要整成八位二进制,又必须做出处理,这个时候使用zfill是个不错的主意:>>> bin(15)[2:].zfill(8)'00001111'>>>从上面来看,使用zfill自动从左往右填充指定宽度...

2018-06-29 21:58:14 1973 2

原创 PyCharm中设置行号

在写代码的时候,编辑器显示不了行号,定位,分析都不方便!在PyCharm里,一般默认不显示行号,效果是这样的:如果要做临时性设置,就需要将鼠标放在行号与代码之间的位置,右键,并点击Show Line Numbers点击之后就可以显示行号了。上面的设置只能在当个模块,当时有效。换个文件,重启PyCharm行号都不存在!如果要做长久设置,就必须做设置,具体: File->Settings-&gt...

2018-06-24 08:55:38 2473

原创 Python对字典中的键值排序

字典是Python的另一种有序的可变数据结构,且可存储任意类型对象。字典是一种键值对的数据容器,每个键值(key:value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号“{}”中。键和值两者一一对应,与表不同的是,词典的元素没有顺序,不能通过下标引用元素。字典是通过键来引用。字典中的键必须是唯一的同时不可变的,值则没有限制。但其中的键:值的关系是hash,所以键打印出来其...

2018-06-18 19:12:04 5495

原创 Python中正则匹配TAB及空格的小技巧

在正则中,使用.*可以匹配所有字符,其中.代表除\n外的任意字符,*代表0-无穷个,比如说要分别匹配某个目录下的子目录:>>> import re>>> match = re.match(r"/(.*)/(.*)/(.*)/", "/usr/local/bin/")>>> match.groups()('usr', 'local', 'b

2018-06-16 18:38:52 56739

原创 Pycharm常用快捷键

常用快捷键Ctrl + F1               # 显示错误描述或警告信息Ctrl + /                # 行注释Ctrl + Shift + /        # 块注释Tab / Shift + Tab       # 缩进、不缩进当前行Ctrl + D                # 复制选定的区域或行Ctrl + Y                # 删除选定...

2018-06-16 09:35:00 738

原创 Python中的单引号,双引号,三重引号的区别

经常有人问Python中的单引号,双引号,三重引号的区别,其实上还是有区别的。单引号和双引号基本上没什么区别,区别只在于下面这种情况。>>> S1 = 'I do like "Python"'>>> print(S_01)I do like "Python">>> S2 = "I do like "Python&quo

2018-06-13 22:21:44 13262 4

原创 Python中字符串对齐

有时候字符串需要做一些左,中,右对齐操作,比如商场打印的发票的,收费项都是左对齐,金额右对齐,抬头中央对齐,在Python的有对应的三个函数ljust(), center(), rjust() 分别对应左、中、右操作! 有两个用法:一种是默认不带参数,则默认是以空格填充>>> print("|" + "OK".ljust(10) + "|" + "OK".rjust(10) +...

2018-06-12 22:04:08 9269

原创 Python中测试一个对象是否为字符串

有时候需要测试一个对象,尤其是你写一个函数和方法,经常要测试传入的参数是否是一个字符串,如果采用了其他语言的类似的处理方式,测试传入参数的类型type(),通常就是这么写:>>> def isString(obj): return type(obj) is type('')>>> isString('Hello')True>>> isS...

2018-06-12 21:36:06 7986

原创 django环境搭建

Python 3.6.5 + django + pymysql + MySQL + HeidiSQL + Pycharm 1. 安装Python,建议使用最新版本,当前最新的Python 3.6.5a) 如果PC机上既安装了Python 2.x和3.x建议,将安装的目录添加到环境变量中b) 建议修改python.exe为python3.exec) 查询Python当前版本C:\>python...

2018-06-09 11:16:11 622

原创 django中连接Mysql数据库兼容Python 2.x 与 Python

Python 2.x的官方支持要到2020就截止了,djagon 2.0以上的版本则明确不支持python 2.7版本,需要python 3.5+,而有的项目有的需要兼容性,比如要连接Mysql数据库的第三方库, Python 2.x使用的是MySQLdb模块,Python 3.x使用的是pymysql, 是django框架中,经常会报没有MySQLdb模块的错误,这个因为里面的base.py里面...

2018-06-08 22:18:07 1134

原创 sed中的&在字符串拆分的妙用

有一个字符串'1234567890',如何在Shell中拆分为12 34 56 78 90,以空格分开,似乎不太好整,但如果使用sed,方法会很巧妙。echo "1234567890" | sed 's/../&\ /g's///g  是sed中替换的格式..     代表任意两个字符&      代表前面两个字符\      空格前面加反斜杠转义,相当于在两个字符后面添加了一个空...

2018-06-08 21:48:31 4343 1

原创 Python对字符串按次序分隔

有同事提出,如何用Python对一个字符串进行,每2个一组的列表输出,方法其实有很多:方法一:  >>> x = "OxTNii69PjlWIDD171">>> [x[i:i+2] for i in range(0,len(x),2)]['Ox', 'TN', 'ii', '69', 'Pj', 'lW', 'ID', 'D1', '71']方法二:  &g...

2018-05-26 07:58:54 1062

原创 Python使用random.sample生成随机数字

有个特殊测试场景需求:需要造100W个,长度为255字节的随机数字(含大写字母,小写字母和数字)。这个时候使用random模块的sample函数+string模块的digits,digits属性可以很好的满足需求:比如上面,从ABCD四个字符随机取出2个,就可以看到,第一个参数是一个序列,第二个参数是取的随机数个数,当前其大小要小于len(aList).然后再结合string模块:如果要凑齐255...

2018-05-22 23:02:54 18149 1

转载 shell常用正则表达式

^      行首$      行尾.      除了换行符以外的任意单个字符*      前导字符的零个或多个.*     所有字符[]     字符组内的任一字符[^]    对字符组内的每个字符取反(不匹配字符组内的每个字符)^[^]   非字符组内的字符开头的行[a-z]  小写字母[A-Z]  大写字母[a-Z]  小写和大写字母[0-9]  数字\<     单词头 单词一般以空...

2018-04-30 10:31:40 1422

原创 Shell脚本中如何将所有命令执行的结果定位到日志中

经常会有人问:Shell中如何将自己的脚本中的每条命令的执行结果放置到自定义的日志文件中? 默认情况下,每条命令执行后,标准输出会定向到屏幕输出,标准错误也会定向到屏幕输出,但屏幕一晃而过,你也就看不到了,如果使用>或者>>,即重定向或者追加重定向是可以将每条命令的输出定位到日志文件中的,但是要将所有的命令的输出结果定向到一个文件就必须每条命令重定向一次,非常之不方便!使用tee...

2018-04-23 21:35:13 13414 1

原创 使用os.path中basename和dirname来获取目录名

有同事碰到大量含目录及文件的文本中,该文件中每个目录以分号间隔,要根据指定的文件名,来获取其目录名,比如说:stra = "a/b/C.xml;/d/E.java;f/h/i/j/foo.html;l/M.sh;"这种数据结构,要将文件名为foo.html之前的目录给提取出来f/h/i/j,这个时候,方法应该是有很多的,比如shell,思路大致先将分号替换成换行符,然后grep定位到特定的foo....

2018-04-21 11:34:19 6822

原创 各设备在Linux中文件名

经常会碰到有人会问为什么用df -h命令查看到硬盘的设备号有的是/dev/hda有的又是/dev/sda,原因是在Linux操作系统中,一切都是文件!所以显然包括硬盘,也当作文件来对待。举例来说IDE接口的硬盘文件为/dev/hd[a-d],方括号中的a-d代表a-d中的任意一个,也即是/dev/hda, /dev/hdb, /dev/hdc, /dev/hdd这四个中的文件的意思。而SCSI/S...

2018-04-16 21:29:09 1402

原创 Python中的sum函数一个妙用

有一道题,将一个二元列表,综合成一个一元列表。 比如:[[1],[2,3],[4,5,6]],将其转成[1, 2, 3, 4, 5, 6].这个时候使用Python自带的sum函数会很简单。 先看下sum函数的帮助文档:从上面的帮助文档可以看出:sum函数是个内置函数,可以求一个数字列表的和,并且可以带初始值,如果不带初始值的话,默认是0.比如说:>>> sum([1,2,3,4...

2018-04-14 10:59:16 13284 3

原创 Linux海量文件删除耗时比较

经常会测试海量大数据,在不同文件系统下执行列出(list),删除(rm)等操作的执行时间,下面列出了,执行删除50万个文件时,使用不同的命令或者脚本,执行时间!从上面可以看出,根据笔者之前用Hadoop,Spark等大数据使用rm命令来删除海量文件,耗时最长,且容量造成Hung机甚至系统崩溃!而使用find命令或者ls命令先列出,再通过管道传给-exec或者-delete来删除无疑是不错的选择,最...

2018-04-13 22:22:42 4044 2

原创 Linux中创建swap分区

swap分区其实就是将一部分的硬盘化出来充当内存的功能!其速度介于硬盘与内存之间,如果内存不足的话,swap分区能起到不错的作用!这就是为什么要划分swap分区的原因。有同事问LINUX操作系统下如何创建swap分区? 其实不同的操作系统下,比如说RedHat在安装操作系统的过程中,就会有提示创建swap分区,而且swap分区的大小一般为内存的1-2倍为佳。但有的操作系统在安装的时候没有swap分...

2018-04-12 22:09:53 4319

原创 Linux删除文件提示Operation not permitted的处理办法

经常有同事问,删除文件/目录时报Operation not permitted错误,这个要如何处理?!这个一般是权限的问题,比如:1. 普通用户且有足够的权限的话,一般文件夹可能是别的服务/进程掉用该文件夹lsof +D  /Dir/Your/Want/To/Delete/先执行上面的命令,查询到调用该文件夹的进程IDs,然后再kill掉,这个时候应该就可以删了!2. 普通用户且缺乏权限的话,如果...

2018-04-11 21:12:10 28978 1

原创 history命令时间格式设置

Linux命令中,无论是对系统管理员还是对普通用户抑或是黑客,history都是极其重要的命令,对管理员来说,出于安全考虑,其中的一个很重要的设置,比如设置history显示的条数,另外一个很重要的设置的就是设置时间格式,通过设置,可以清楚看到,从哪个IP地址登录的用户在什么时间,执行了什么命令,这几点对系统管理员来说,非常之重要!具体设置,可以通过export命令来短暂设定,也可以通过修改系...

2018-04-10 21:33:00 1550

原创 Python列表的差集

经常会碰倒从列表A中含B中的元素的排除的情况下,比如说:列表A = ['2018-01-01','2018-02-01','2018-03-01','2018-04-01']列表B = ['2018-03-01','2018-03-08']要将A中的元素2018-03-01元素排除,可以用到的方法如下:方法一:常规方法>>> A = ['2018-01-01','2018-02-...

2018-04-09 22:07:38 20225

原创 Linux中basename和dirname命令的妙用

有同学问,如何/dir1/dir2/dir3/file中的,前半部分:/dir1/dir2/dir3和最后部分file,这个用字符串分隔及${str//}来处理还比较难办,这个时候basename和dirname命令就很方便了。[dirname]手册页“Print  NAME  with  its  trailing  /component  removed; if NAME contains n...

2018-04-09 21:13:51 34104

原创 Python列表去重的几种方法

工作中,面试中经常会碰到列表去重的问题,有必要总结下:方法一: 使用内置set方法来去重>>> lst1 = [2, 1, 3, 4, 1]>>> lst2 = list(set(lst1))>>> print(lst2)[1, 2, 3, 4]方法二: 使用字典中fromkeys()的方法来去重>>> lst1 = [...

2018-04-07 19:12:48 177848 10

转载 是什么让程序员成了一份苦逼的工作?

2017-11-30 21:35:35 529

Perl Cookbook

Perl Cookbook, 学习Perl非常宝贵的经典!

2014-03-29

ASE_config_guide_unix

本文档用于UNIX下,Sybase Adaptation Server的安装,配置,管理。

2014-02-17

Clean Code-代码整洁之道 中文完整版清晰版

本书提出一个概念:代码的质量与其整洁度成反比。干净的代码,在质量上较为可靠,在维护上比较方便。作为编程领域内的佼佼者,作者给出了一系列行之有效的整洁代码操作实践。 本书阅读对象为一切有志于改善代码质量的程序员及技术经理。

2014-02-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除