python笔记(四)
1. 文件操作 file operation
open(...) 打开一个文件返回一个流对象
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) #除了file参数,其他参数均有默认值
'r' 只读模式
'w' 写入(会覆盖已存在的文件)模式
'x' 文件存在,报异常的模式
'a' 写入(文件存在则追加)模式
'b' 二进制模式
't' 文本模式
'+' 可读写模式(可添加到其他模式)
'U' 通用换行符支持
举例:
#打开一个文件,注意路径的中\反斜杠的转义(或用/斜杠一根即可)
>>> f = open('C:\\Users\\Jan\\Desktop\\IP.txt')
>>> f
<_io.TextIOWrapper name='C:\\Users\\Jan\\Desktop\\IP.txt' mode='r' encoding='cp936'>
2.文件对象方法
(整理)
http://bbs.fishc.com/forum.php?mod=viewthread&tid=45279&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403
(1) 文件对象支持直接使用list转换读出
(2) 文件对象支持 for...in 的迭代方式读取
举例:
>>> f = open('C:\\Users\\Jan\\Desktop\\IP.txt') #f,打开的文件流对象
>>> f.read()
'【本机】\nIP:192.168.31.217\n[ Ctrl + r ]\ncmd\nping 192.168.31.207\nmstsc\n\n\n【虚拟机】 - 虚拟网络编辑器(自动) - 桥接模式\nIP:192.168.31.207\nlinux账户:jiangyuan\nlinux密码:123456\n'
>>> f.read()
''
>>> f.close()
>>> f = open('C:\\Users\\Jan\\Desktop\\IP.txt')
>>> f.read(5)
'【本机】\n'
>>> f.tell()
10
>>> f.seek(45, 0) #0,文件起始位置;45,偏移字节数。从文件起始位置偏移一定量字节
45
>>> f.readline()
'md\n'
>>> list(f)
['ping 192.168.31.207\n', 'mstsc\n', '\n', '\n', '【虚拟机】 - 虚拟网络编辑器(自动) - 桥接模式\n', 'IP:192.168.31.207\n', 'linux账户:jiangyuan\n', 'linux密码:123456\n']
>>> for each_line in f:
print(each_line)#逐行读取文件内容的高效方法
【本机】
IP:192.168.31.217
[ Ctrl + r ]
cmd
ping 192.168.31.207
mstsc
...
#创建一个新的可写入的文件,写入内容,然后关闭文件流对象
>>> f = open('C:\\Users\\Jan\\Desktop\\test.txt', 'w')
>>> f.write('some lines')
10
>>> f.close()
任务:将文件record.txt中的数据进行分割并且按照规律保存起来。
record.txt:
小客服:小甲鱼,今天有克服问你有没有女朋友?
小甲鱼:咦?
小客服:我跟她说你有女朋友了!
小甲鱼:。。。。。。。
小客服:她让你分手后考虑下她!然后我说:“您要买个优盘,我就帮您留意下
~”
小甲鱼:然后呢?
小客服:她买了两个,说发一个货就好~
小甲鱼:呃。。。。。。你真牛!
小客服:谁让我是鱼C最可爱的小客服嘛~
小甲鱼:下次有人想调戏你我不阻止~
小客服:滚!!!
=====================================================================
小客服:小甲鱼,有个好评很好笑哈。
小甲鱼:哦?
小客服:“有了小甲鱼,以后妈妈再也不用担心我的学习了~”
小甲鱼:哈哈哈,我看到丫,我还发微博了呢~
小客服:嗯嗯,我看了你的微博丫~
小甲鱼:哟西~
小客服:那个有条回复“左手拿着小甲鱼,右手拿着打火机,哪里不会点哪里,
so easy ^_^”
小甲鱼:T_T
=====================================================================
小客服:小甲鱼,今天一个会员想找你
小甲鱼:哦?什么事?
小客服:他说你的一个学生月薪已经超过12K了!!
小甲鱼:哪里的?
小客服:上海的
小甲鱼:那正常,哪家公司?
小客服:他没说呀。
小甲鱼:哦
小客服:老大,为什么我工资那么低啊??是时候涨工资了!!
小甲鱼:啊,你说什么?我在外边呢,这里好吵吖。。。。。
小客服:滚!!
#最终代码如下:
def save_file(boy, girl, count):
# 文件的分别保存操作
file_name_boy = 'boy_' + str(count) + '.txt'
file_name_girl = 'girl_' + str(count) + '.txt'
boy_f = open(file_name_boy, 'w')
girl_f = open(file_name_girl, 'w')
boy_f.writelines(boy)
girl_f.writelines(girl)
boy_f.close()
girl_f.close()
def split_file(filename):
f = open(filename)
boy = []
girl = []
count = 1
for each_line in f:
if each_line[:6] != '======':
# 我们再这里进行字符串分割操作
(role, line_spoken) = each_line.split(':', 1) #中文冒号:否则会报错
if role == '小甲鱼':
boy.append(line_spoken)
if role == '小客服':
girl.append(line_spoken)
else:
save_file(boy, girl, count)
boy = []
girl = []
count += 1
save_file(boy, girl, count)
f.close()
split_file('C:\\Users\\Jan\\Desktop\\python_study\\record.txt')
文件操作练习题及答案(伪代码可以保存一下):
http://blog.csdn.net/junwei0206/article/details/44988195
3. 模块 modules
(1) 模块是.py的python文件
(2) 使用模块是需要进行导入,使用关键字 import
举例:
>>> import random
>>> secret = random.randint(1, 10)
>>> secret
3
os 模块(系统模块)
os模块方法表格:http://bbs.fishc.com/thread-45512-1-2.html
举例:
>>> import os
>>> os.getcwd() #输出当前工作目录
'C:\\Users\\Jan\\AppData\\Local\\Programs\\Python\\Python35'
>>> os.chdir('E:\\') #改变工作目录
>>> os.getcwd()
'E:\\'
>>> os.listdir('E:\\') #列举指定目录中的文件名
['$RECYCLE.BIN', '.cache', '360Downloads', 'Jan_mi', 'Jan个人总资料', 'Qiyi', 'QQMusicCache', 'qycache', 'System Volume Information', 'Youku Files', 'Youxun', '博客'] #RECYCLE.BIN是个回收站
>>> os.mkdir('E:\\A') #创建单层目录,如该目录已存在抛出异常
>>> os.mkdir('E:\\A\\B')
>>> os.mkdir('E:\\C\\D')
FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'E:\\C\\D'
>>> os.remove('E:\\A\\B\\test.txt') #删除文件
>>> os.rmdir('E:\\A\\B\\') #删除单层目录,如该目录非空则抛出异常
>>> os.system('cmd') #运行系统的shell命令:windows shell窗口
-1073741510
>>> os.system('calc') #运行系统的shell命令:calc计算器
0
>>> os.curdir #当前目录('.')
'.'
>>> os.listdir(os.curdir) # 等同于 os.listdir('.')
['$RECYCLE.BIN', '.cache', '360Downloads', 'A', 'Jan_mi', 'Jan个人总资料', 'Qiyi', 'QQMusicCache', 'qycache', 'System Volume Information', 'Youku Files', 'Youxun', '博客']
>>> os.sep #输出操作系统特定的路径分隔符(Win下为'\\',Linux下为'/')
'\\'
>>> os.linesep #当前平台使用的行终止符(Win下为'\r\n',Linux下为'\n')
'\r\n'
>>> os.name #指代当前使用的操作系统(包括:'posix', 'nt', 'mac', 'os2', 'ce', 'java')
'nt' #nt是windows系统平台
os.path 模块(系统路径模块属于os的子模块)
>>> os.path.basename('E:\\A\\B\\C\\sexy.avi') #去掉目录路径,单独返回文件名
'sexy.avi'
>>> os.path.dirname('E:\\A\\B\\C\\sexy.avi') #去掉文件名,单独返回目录路径
'E:\\A\\B\\C'
>>> os.path.join('A', 'B', 'C') #将path1, path2...各部分组合成一个路径名
'A\\B\\C'
>>> os.path.join('D:', 'A', 'B', 'C')
'D:A\\B\\C'
>>> os.path.join('D:\\', 'A', 'B', 'C') #注意盘符需要带上斜杠
'D:\\A\\B\\C'
>>> os.path.split('E:\\A\\SEXY.AVI') #分割文件名与路径,返回(f_path, f_name)元组。
('E:\\A', 'SEXY.AVI')
>>> os.path.split('E:\\A\\B\\C')
('E:\\A\\B', 'C')
>>> os.path.splitext('E:\\A\\SEXY.AVI') #分离文件名与扩展名,返回(f_name, f_extension)元组
('E:\\A\\SEXY', '.AVI')
>>> os.path.getatime('E:\\A\\test.txt') #返回指定文件最近的访问时间
1504103243.229383 #浮点型秒数,可用time模块的gmtime()或localtime()函数换算
>>> import time
>>> time.gmtime(os.path.getatime('E:\\A\\test.txt'))
time.struct_time(tm_year=2017, tm_mon=8, tm_mday=30, tm_hour=14, tm_min=27, tm_sec=23, tm_wday=2, tm_yday=242, tm_isdst=0)
>>> time.localtime(os.path.getatime('E:\\A\\test.txt'))
time.struct_time(tm_year=2017, tm_mon=8, tm_mday=30, tm_hour=22, tm_min=27, tm_sec=23, tm_wday=2, tm_yday=242, tm_isdst=0)
>>> time.localtime(os.path.getmtime('E:\\A\\test.txt'))
time.struct_time(tm_year=2017, tm_mon=8, tm_mday=30, tm_hour=22, tm_min=30, tm_sec=1, tm_wday=2, tm_yday=242, tm_isdst=0)
>>> time.localtime(os.path.getctime('E:\\A\\test.txt'))
time.struct_time(tm_year=2017, tm_mon=8, tm_mday=30, tm_hour=22, tm_min=27, tm_sec=23, tm_wday=2, tm_yday=242, tm_isdst=0)
>>> os.path.ismount('E:\\') #判断指定路径是否存在且是一个挂载点
True
>>> os.path.ismount('E:\\A')
False
4. pickle 模块(泡菜模块)
举例:
>>> import pickle
>>> my_list = [123, 3.14, '名字', ['another list']]
>>> pickle_f = open('E:\\A\\my_list.pkl', 'wb')
>>> pickle.dump(my_list, pickle_f) #将list的内容倾倒入文件流对象中
>>> pickle_f.close()
>>> pickle_f = open('E:\\A\\my_list.pkl', 'rb')
>>> my_list2 = pickle.load(pickle_f) #将.pkl文件的内容装载到list中
>>> print(my_list2)
[123, 3.14, '名字', ['another list']]
例2:
>>> city = {'城市1':'000001', '城市2':'000002', '城市n':'999999'} #此字典映射有70k这么大
>>> import pickle
>>> pickle_f = open('E:\\A\\city.pkl', 'wb') #将70k的字典映射写入文件
>>> pickle.dump(city, pickle_f)
>>> pickle_f.close()
>>> pickle_file = open('E:\\A\\city.pkl', 'rb') #使用字典的时候打开文件装载即可
>>> city = pickle.load(pickle_file)
>>> print(city)
{'城市2': '000002', '城市n': '999999', '城市1': '000001'}
python笔记(四)相关推荐
- Python笔记四之操作文件
一.字符串方法补充(join.split) join方法: # join方法,连接字符串 1.把一个list变成了字符串 2.通过某个字符把list里面的元素连接起来 # 3.只要是可以循环的都可以连 ...
- Python笔记 | 四平方数和定理
文章目录 0x00 前言 0x01 问题分析 0x02 代码设计 0x03 代码流程 0x04 完整代码 0x05 运行效果 0x06 参考文献 0x07 总结 0x00 前言 "四平方数和 ...
- 4. Python脚本学习实战笔记四 新闻聚合
4. Python脚本学习实战笔记四 新闻聚合 本篇名言:"人言纷杂,保持自我:工作勤奋,娱乐适度:对待朋友,不玩心术:处理事务,不躁不怒:生活讲究,量入为出:知足常乐,一生幸福!" ...
- 狗剩学python:基本概念笔记(四)
出差了两个月,坐车要吐了,继续基本笔记 四.类.方法.继承.实例.魔法方法 没啥好说的,面向对象编程么... 没有对象就定义一个... 重点: (十四)魔法方法 魔法方法就是重载,常用得魔法方法有: ...
- python笔记-1(import导入、time/datetime/random/os/sys模块)
python笔记-6(import导入.time/datetime/random/os/sys模块) 一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其它内 ...
- 吴恩达《机器学习》学习笔记四——单变量线性回归(梯度下降法)代码
吴恩达<机器学习>学习笔记四--单变量线性回归(梯度下降法)代码 一.问题介绍 二.解决过程及代码讲解 三.函数解释 1. pandas.read_csv()函数 2. DataFrame ...
- 初学者python笔记(内置函数_2)
这篇初学者笔记是接着上一篇初学者python笔记(内置函数_1)的.同样都是介绍Python中那些常用内置函数的. max()和min()的高级用法 我们都知道,max():取最大值,min():取最 ...
- 初学者python笔记(map()函数、reduce()函数、filter()函数、匿名函数)
文章目录 一.匿名函数 二.map()函数 三.reduce()函数 四.filter()函数 五.三大函数总结 本篇文章内容有Python中的匿名函数和map()函数.reduce()函数.filt ...
- ROS学习笔记四:理解ROS节点
ROS学习笔记四:理解ROS节点 本节主要介绍ROS图形概念,讨论ROS命令行工具roscore.rosnode和rosrun. 要求 要求已经在Linux系统中安装一个学习用的ros软件包例子: s ...
- Python笔记day04(基础)|列表、元组
Python笔记day04(基础) 1,昨日内容及作业讲解 ascii:字母,数字,特殊字符:1个字节,8位 Unicode:16位 两个字节 升级 32 位 四个字节 utf-8:最少一个字节 8位 ...
最新文章
- apache ab压力测试
- centos 6.x 升级内核
- 房产众筹项目质疑声中再推出
- 《Splunk智能运维实战》——3.6 制作每一主机不同请求方法数量的图表
- STS安装lombok
- SpringBoot 异常回滚 事务的使用___Springboot @Transactional 事务不回滚
- python打印二进制内容_在python中打印出c类型的二进制表示
- Spring MVC的WebMvcConfigurerAdapter用法收集(零配置,无XML配置)
- 小程序页面启动过程分析
- 使用 PlantUML 绘制时序图
- 用POP3获取邮箱邮件内容(完整C#源码)
- 添加内核驱动模块(2)(mydriver.c+ Konfig+Makefile )
- html如何在手机打开,HTML怎么在手机打开
- MATLAB中的单相与三相dq变换模块
- Mysql监控工具介绍-Monyog
- MacBook连接打印机-惠普HP LaserJet Pro MFP M427fdn 连接方法
- 计算机加密怎么设置方法,如何设置电脑密码?手把手教你如何设置电脑Windows密码...
- txt.......
- 7-6 查询水果价格
- 智能机器人与智能系统(大连理工大学庄严教授)——3.工业机器人