Python 个人常用汇总
http://www.runoob.com/python/python-tutorial.html Python 基础教程
Python 常用文件操作总结:
通常需要安装numpy, scipy,sklearn,可以通过类似numpy.__version__查看对应的版本,查看路径numpy.__path__
pip install -U numpy==1.12.0 更新或者降低版本到指定版本
查看服务器上安装哪些安装包及版本:pip list
导入库路径:sys.path.append('/usr/local/lib/python2.7/site-packages')
from random import shuffle
shuffle(lines) #随机打乱
判断文件夹是否有效:
if not os.path.isdir(targetDir):
print 'Invalid target directory: {}'.format(targetDir)
sys.exit(2)
或者使用断言:assert(os.path.isdir(targetDir)), 'Invalid target directory: {}'.format(targetDir)
判断文件夹是否存在:
if not os.path.exists(targetDir):
os.makedirs(targetDir) 列出文件夹下的所有文件的名字,不包括路径:for file in os.listdir(sourceDir):
获取文件名:os.path.basename(path) 包括后缀名
获取当前文件的路径:os.path.realpath(__file__)
获取路径名:os.path.dirname(p)
文件重命名:os.rename(old, new)
创建多级目录文件夹:os.makedirs(path);创建单个目录文件夹:os.mkdir(path)
文件删除:os.remove(targetFile)
删除目录:shutil.rmtree(path) 递归删除一个目录(有内容,空的均可)
文件复制:shutil.copy(sourceDir, targetDir) #复制源文件到指定目录,或者可以复制源文件到指定目录
复制文件:shutil.copyfile(src, dst) 复制数据从src到dst(src和dst均为文件);shutil.copy(src, dst) 复制数据从src到dst(src为文件,dst可以为目录)
移动目录(文件):shutil.move(src, dst) 递归移动一个文件或目录到另一个位置,类似于"mv"命令
得到当前目录路径:os.getcwd()
建立软链接:os.symlink(org_file,link_name)
分离扩展名,扩展名可能为空:os.path.splitext(p), 得到('/home/test/imagename', '.jpg') 循环获得文件目录结构下的各个文件:[http://www.cnblogs.com/herbert/archive/2013/01/07/2848892.html]
for dir_info in os.walk(image_dir):
root_dir, sub_dirs, file_names = dir_info
for each in dir_info[2]:
xmlName = each.replace('.jpg', '.xml') #如果目录下都是jpg文件,则将其名字提取,后缀替换为.xml,然后赋值给XMLName,当然,原来的each 名字不变,
file_paths = glob.glob(os.path.join('./test', '**/*.jpg'), recursive=True) #可以循环的获取'./test'文件夹及所有子文件夹的以‘.jpg’结尾的文件的全路径
for index, file_path in enumerate(file_names):
print(index, file_path)
if os.path.isfile(in_image = os.path.join(root_dir, file_names)): #文件拼接,获得全路径,并判断文件是否存在
print 'the file with full path is', in_image
if not os.path.exists(targetFile): #判断文件是否存在
if (os.path.getsize(targetFile) != os.path.getsize(sourceFile))):
open(targetFile, "wb").write(open(sourceFile, "rb").read()) #文件读写:打开源文件,写入目标文件
多线程/多进程处理[https://docs.python.org/zh-cn/3/library/concurrent.futures.html]
import concurrent.futures
with concurrent.futures.ThreadPoolExecutor(max_workers=2) as executor: #多进程使用concurrent.futures.ProcessPoolExecutor() 具体使用参考文档
future_results = {executor.submit(pow, 323, 1235), executor.submit(pow, 226, 888)} # 也可以使用responses = executor.map(func, param_lists)
for future in concurrent.futures.as_completed(future_results):
future_result = future_results[future]
try:
data = future_result.result()
except Exception as exc:
print('generated an exception: %s' % (exc))
else:
print(future_result.result())
文件读写
file=open('labels.txt','r')
for eachline in file: #或者for eachline in file.readlines()
filename1 = eachline.strip().split(',') #strip移除首尾指定的字符,默认为空格,每一行文件格式:785,533,905,644,14794983.jpg,Car
filename2 = filename1.replace('.jpg', '.xml')
newline = 'dir_path' + '/' + filename2
txt = open('xml.txt','a')
txt.writelines(newline)
txt.write('\n') # txt.write('{:5}{:25}\n'.format(key, string2Write)) #格式化写入
txt.close()
file.close()
文件写入exel表格
import xlwt
workbook = xlwt.Workbook("my.xls")
worksheet = workbook.add_sheet('Sheet1')
# write head
# worksheet.write(row_num, col_num, label = str'contents')
worksheet.write(0, 0, label = 'FileName')
worksheet.write(0, 1, label = 'label')
workbook.save('my.xls')
文件压缩解压
# coding=utf-8
#!/usr/bin/env python
import zipfile
z=zipfile.ZipFile('file.zip')
for i, f in enumerate(z.filelist):
# 这里的gdk和UTF-8,可以依据具体的情况修改
# 或者修改成两个运行参数
f.filename = f.filename.decode('gbk').encode("UTF-8")
z.extract(f)
有序字典:
from collections import OrderedDict
typenames = OrderedDict([('name1', 0, 0), ('name1', 1, 0)]) 进行初始化
typenames['name1'] = [0, 0]
typenames['name2'] = [1, 2]
所以有typenames[3] 为[1, 2] typenames[3][0] 为1, typnames[3][1] 值为2
for typenamesKey, typenamesValue1, typenamesValue2 in typenames.items():
或者 for key in typenames.keys() 进行遍历
对输入的处理:
import argparse
def get_parse_args():
parser = argparse.ArgumentParser(description='get the args')
parser.add_argument('--device', dest='device_type', help='device to use', default='cpu', type=str)# parser.add_argument('device_type')
if len(sys.argv) == 1:
parser.print_help() #直接可以调用对应的help输出对应的描述
sys.exit(1) args = parser.parse_args()
return args # 使用的时候
if __name__ == '__main__':
args = parse_args()
print(args)
if args.device_type is not None:
dosomething(args.device_type)
++++++++++++++++++++++++++++++++++++++++
正则表达式,具体详细见:https://docs.python.org/zh-cn/3/library/re.html prog = re.compile(pattern), result = prog.match(string) 等价于 result = re.match(pattern, string)
正则表达包含变量的写法:
re.compile(r’表达式’)
包含变量的正则表达式写法
re.compile(r’表达式’+变量+’表达式’) re.compile(r’表达式(%s)表达式’ %变量)
.:(点) 在默认模式,匹配除了换行的任意字符;
^:(插入符号) 匹配字符串的开头, 并且在 MULTILINE 模式也匹配换行后的首个符号;
$:匹配字符串尾或者换行符的前一个字符, 在 'foo1\nfoo2\n' 搜索 foo.$ ,通常匹配 'foo2';
*:对它前面的正则式匹配0到任意次重复,尽量多的匹配字符串。ab* 会匹配 'a','ab',或者 'a'``后面跟随任意个 ``'b';
+:对它前面的正则式匹配1到任意次重复。 ab+ 会匹配 'a' 后面跟随1个以上到任意个 'b',它不会匹配 'a';
?:对它前面的正则式匹配0到1次重复。 ab? 会匹配 'a' 或者 'ab';
{m}:对其之前的正则式指定匹配 m 个重复;少于 m 的话就会导致匹配失败。比如, a{6} 将匹配6个 'a' , 但是不能是5个;
{m,n}:对正则式进行 m 到 n 次匹配,在 m 和 n 之间取尽量多。 比如,a{3,5} 将匹配 3 到 5个 'a'。忽略 m 意为指定下界为0,忽略 n 指定上界为无限次。 逗号不能省略,否则无法辨别修饰符应该忽略哪个边界。
{m,n}?:前一个修饰符的非贪婪模式,只匹配尽量少的字符次数。比如,对于 'aaaaaa', a{3,5} 匹配 5个 'a' ,而 a{3,5}? 只匹配3个 'a';
\:转义特殊字符(允许你匹配 '*', '?', 或者此类其他)
[]:用于表示一个字符集合;
\d:匹配任何Unicode十进制数(就是在Unicode字符目录[Nd]里的字符)。这包括了[0-9] ,和很多其他的数字字符。如果设置了 ASCII 标志,就只匹配 [0-9] 。
++++++++++++++++++++++++++++++++++++++++++ 格式化空格对齐:
rjust,向右对其,在左边补空格: s = "123".rjust(5) -> assert s == " 123"
ljust,向左对其,在右边补空格: s = "123".ljust(5) -> assert s == "123 "
center,让字符串居中,在左右补空格: s = "123".center(5) -> assert s == " 123 "
列表操作:http://www.runoob.com/python/python-lists.html
li = ['a', 'b', 'new'] ; print li.index("new") 输出为2; print "c" in li 输出为False
list.append('Google') 添加元素;del li[2] 删除元素;li[1:] 取列表第二个之后的元素;
用Pyinstaller打包发布exe应用:https://jingyan.baidu.com/article/a378c960b47034b3282830bb.html
pyinstaller -F test.py 打包成不需要安装依赖库的EXE文件,最后生成的执行文件在dist文件夹下,只需要将dist文件拷贝给用户即可。
Python 个人常用汇总的更多相关文章
- python对接常用数据库,快速上手!
python对接常用数据库,快速上手! 很多同学在使用python进行自动化测试的时候,会涉及到数据库数据校验的问题,因为不知道如何在python中如何对数据库,这个时候会一脸茫然,今天在这里给大家汇 ...
- 一份超全的Python学习资料汇总
一.学习Python必备技能图谱二.0基础如何系统学习Python?一.Python的普及入门1.1 Python入门学习须知和书本配套学习建议1.2 Python简史1.3 Python的市场需求及 ...
- Python学习常用的好网站
以下总结出自己在学习python期间常用的网址或者资源,其中包括很多人的博客,方便自己从这个入口查找资源. 1.https://www.liaoxuefeng.com/wiki/00143160895 ...
- python字符串常用内置方法
python字符串常用内置方法 定义: 字符串是一个有序的字符的集合,用与存储和表示基本的文本信息. python中引号中间包含的就是字符串. # s1='hello world' # s2=&quo ...
- Python实现常用排序算法
Python实现常用排序算法 冒泡排序 思路: 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完 ...
- Python文件常用操作方法
Python文件常用操作方法 一.对File对象常用操作方法: file= open(file, mode='r', buffering=-1, encoding=None, errors=None, ...
- python 字符串常用操作方法
python 字符串常用操作方法 python 字符串操作常用操作,如字符串的替换.删除.截取.赋值.连接.比较.查找.分割等 1.去除空格 str.strip():删除字符串两边的指定字符,括号的写 ...
- 【转】python 历险记(四)— python 中常用的 json 操作
[转]python 历险记(四)— python 中常用的 json 操作 目录 引言 基础知识 什么是 JSON? JSON 的语法 JSON 对象有哪些特点? JSON 数组有哪些特点? 什么是编 ...
- python列表常用内建方法
python列表常用内建方法: abc = ['a',1,3,'a'] #abc.pop(1) #删除索引1的值.结果['a', 3] #abc.append([123]) #结果:['a', 1, ...
随机推荐
- 一个用于将sql脚本转换成实体类的js代码
以前写过一段C#,苦于编译才能用.这样的小工具最好是用脚本语言来编写,易于执行,也易于修改. js 代码 convert.js ------------------------------------ ...
- RandomForest&ROC
# -*- coding: utf-8 -*- # __author__ = 'JieYao' from biocluster.agent import Agent from biocluster.t ...
- Python-Mac OS X EI Capitan下安装Scrapy
sudo pip install scrapy --ignore-installed six #sudo pip install scrapy --upgrade --ignore-installed ...
- Asp.Net MVC中递归死循环问题
在写代码的时候,很欢乐地发现报错了. An unhandled exception of type 'System.StackOverflowException' occurred in mscorl ...
- C# Oracle.ManagedDataAccess 批量更新表数据
这是我第一次发表博客.以前经常到博客园查找相关技术和代码,今天在写一段小程序时出现了问题, 但在网上没能找到理想的解决方法.故注册了博客园,想与新手分享(因为本人也不是什么高手). vb.net和C# ...
- spring mvc接收参数方式,json格式返回请求数据
1 使用方法形参使用变量接收提交的数据 2 在方法的形参中使用模型接收数据 3 如果在提交的表单中有多个数据模型,需要创建一个新的Bean,里面的属性是要接收的对象变量. 4 接收提交的日期字符串,转 ...
- C语言 fork
/* *@author cody *@date 2014-08-12 *@description */ /* #include <sys/types.h> #include <uni ...
- TypeScript 入门指南
你是否听过 TypeScript? TypeScript 是微软开发的 JavaScript 的超集,TypeScript兼容JavaScript,可以载入JavaScript代码然后运行.TypeS ...
- ui-router参数传递
基本参数: ‘/user/:id' '/user/{id}' '/user/{id:int}' 使用正则表达式: '/user/{id:[0-9]{1,8}' '/user/{id:.*}' '/us ...
- Atitit. http 代理原理 atiHttpProxy 大木马
Atitit. http 代理原理 atiHttpProxy 大木马 1. 面这张图可以清晰地阐明HttpProxy的实现原理:1 2. 代理服务器用途1 3. 其中流程具体如下:2 4. 设计规 ...