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, ...
随机推荐
- ant-design 设置 DatePicker 默认值
1.代码 render() { const { value } = this.props; return ( <React.Fragment> { value ? <DatePick ...
- Ubuntu编码问题
Ubuntu编码问题 root@magus-18:/srv/rorapps/fgcc# rails -v Sorry, command-not-found has crashed! Please fi ...
- JDBC:数据库操作:处理大对象CLOB数据
目标: 了解大对象处理基本原理, 掌握CLOB数据的读,写操作. 可以使用CLOB类处理大文本数据. 大对象处理主要指CLOB和BLOB两种类型字段.可以大量存储文字. 要想在程序中处理这样的大数据操 ...
- java集合框架01——总体框架一览
java集合框架是java提供的工具包,在java.util.*中,这个包中包含了常用的数据结构:集合.数组.链表.栈.队列.映射等.java集合框架主要可以分为四个部分:List列表.Set集合.M ...
- bootstrap 网格系统学习
Bootstrap 官方文档中有关网格系统的描述: Bootstrap 包含了一个响应式的.移动设备优先的.不固定的网格系统,可以随着设备或视口大小的增加而适当地扩展到 12 列.它包含了用于简单的布 ...
- python selenium --层级定位
转自:http://www.cnblogs.com/fnng/p/3193955.html 场景: 假如两个控件,他们长的一模样,还都叫“张三”,唯一的不同是一个在北京,一个在上海,那我们就可以通过, ...
- IOS 拍照旋转修正
- (UIImage *)fixOrientation:(UIImage *)aImage { // No-op if the orientation is already correct if (a ...
- 又开一坑,运动图形MoGraph for Unity
Fragment+random: Vertex+random, Vertex+plain Vertex+Sound Plexus like 写了个大概,暂时没这方面需求先放这边了. C4D原版片段和克 ...
- 生成ID模板:年月日时分秒+6位自增码
因为生成订单ID.商品ID 或者什么什么ID的,不想用自增,又怕反复,于是就用 年与日时分秒 + 6位自增码 (共计20位长度)来当作ID 注意:假设你的ID是Long型.就要注意,Long的最大长 ...
- Python学习之read()方法
read([size [,chars [,firstline]]]) 含义: 从文本流(io.TextIOWrapper)中解码数据并返回字符串对象.