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 个人常用汇总的更多相关文章

  1. python对接常用数据库,快速上手!

    python对接常用数据库,快速上手! 很多同学在使用python进行自动化测试的时候,会涉及到数据库数据校验的问题,因为不知道如何在python中如何对数据库,这个时候会一脸茫然,今天在这里给大家汇 ...

  2. 一份超全的Python学习资料汇总

    一.学习Python必备技能图谱二.0基础如何系统学习Python?一.Python的普及入门1.1 Python入门学习须知和书本配套学习建议1.2 Python简史1.3 Python的市场需求及 ...

  3. Python学习常用的好网站

    以下总结出自己在学习python期间常用的网址或者资源,其中包括很多人的博客,方便自己从这个入口查找资源. 1.https://www.liaoxuefeng.com/wiki/00143160895 ...

  4. python字符串常用内置方法

    python字符串常用内置方法 定义: 字符串是一个有序的字符的集合,用与存储和表示基本的文本信息. python中引号中间包含的就是字符串. # s1='hello world' # s2=&quo ...

  5. Python实现常用排序算法

    Python实现常用排序算法 冒泡排序 思路: 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完 ...

  6. Python文件常用操作方法

    Python文件常用操作方法 一.对File对象常用操作方法: file= open(file, mode='r', buffering=-1, encoding=None, errors=None, ...

  7. python 字符串常用操作方法

    python 字符串常用操作方法 python 字符串操作常用操作,如字符串的替换.删除.截取.赋值.连接.比较.查找.分割等 1.去除空格 str.strip():删除字符串两边的指定字符,括号的写 ...

  8. 【转】python 历险记(四)— python 中常用的 json 操作

    [转]python 历险记(四)— python 中常用的 json 操作 目录 引言 基础知识 什么是 JSON? JSON 的语法 JSON 对象有哪些特点? JSON 数组有哪些特点? 什么是编 ...

  9. python列表常用内建方法

    python列表常用内建方法: abc = ['a',1,3,'a'] #abc.pop(1) #删除索引1的值.结果['a', 3] #abc.append([123]) #结果:['a', 1, ...

随机推荐

  1. malloc、calloc、realloc的区别(转)

    (1)C语言跟内存分配方式 <1>从静态存储区域分配.       内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量.static变量.<2> ...

  2. 利用POI进行Excel的导出

    需求:将用户的违约金信息导出为excel表格格式 步骤 1. 数据库中增加按钮的值(注意上级编号要和页面隐藏域中的相等) DZ内容(页面加载时根据SJBH查询数据库内容,读取DZ字段信息并加载样式及方 ...

  3. 动态创建 Log4net 实例

    动态创建log4net 实例 根据业务类型,动态的创建日志实例,将日志写到不同目录.常见的配置文件中统一配置,不能满足需求. 引用log4net nuget安装命令: Install-Package ...

  4. Linux命令-网络命令:mail

    root用户发送邮件 mail wangyunpeng 给wangyunpeng发送邮件,wangyunpeng不在线也可以收到发送的邮件 wangyunpeng用户接收邮件 mail 接收邮件 he ...

  5. 折叠表格思路及遇到的问题(tableView:viewForHeaderInSection:的section从1开始,不是从0开始)

    项目需要做了一个类似qq联系人的折叠表格,思路很简单:设置每个section的header,在header上显示组名等信息,然后根据折叠与否,设置每个section中cell的数量,如果折叠,则将之设 ...

  6. NFC Basics(基本NFC)——翻译自developer.android.com

    NFC Basics 关于收发NDEF格式的消息,以及相关的api. 非NDEFdata以及其它更深入技术请參见Advanced NFC. 在android端使用NDEF有两种情况: - 从标签读取N ...

  7. Tensorflow - Tutorial (7) : 利用 RNN/LSTM 进行手写数字识别

    1. 经常使用类 class tf.contrib.rnn.BasicLSTMCell BasicLSTMCell 是最简单的一个LSTM类.没有实现clipping,projection layer ...

  8. Atitit. 软件开发中的管理哲学--一个伟大的事业必然是过程导向为主 过程导向 vs 结果导向

    Atitit. 软件开发中的管理哲学--一个伟大的事业必然是过程导向为主    过程导向 vs 结果导向 1. 一个伟大的事业必然是过程导向为主 1 1.1. 过程的执行情况(有明确的执行手册及标准) ...

  9. [sh]清理memcached缓存

    #!/bin/bash ###author xxx ###date xxx ###清理内存缓存 used=`free -m | awk 'NR==2' | awk '{print $3}'` free ...

  10. C语言第十一回合:预处理命令的集中营

    C语言第十一回合:预处理命令的集中营   [学习目标]   1.         宏定义 2.         文件包括"处理 3.         条件编译 预处理命令:能够改进程序设计的 ...