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笔记(四)相关推荐

  1. Python笔记四之操作文件

    一.字符串方法补充(join.split) join方法: # join方法,连接字符串 1.把一个list变成了字符串 2.通过某个字符把list里面的元素连接起来 # 3.只要是可以循环的都可以连 ...

  2. Python笔记 | 四平方数和定理

    文章目录 0x00 前言 0x01 问题分析 0x02 代码设计 0x03 代码流程 0x04 完整代码 0x05 运行效果 0x06 参考文献 0x07 总结 0x00 前言 "四平方数和 ...

  3. 4. Python脚本学习实战笔记四 新闻聚合

    4. Python脚本学习实战笔记四 新闻聚合 本篇名言:"人言纷杂,保持自我:工作勤奋,娱乐适度:对待朋友,不玩心术:处理事务,不躁不怒:生活讲究,量入为出:知足常乐,一生幸福!" ...

  4. 狗剩学python:基本概念笔记(四)

    出差了两个月,坐车要吐了,继续基本笔记 四.类.方法.继承.实例.魔法方法 没啥好说的,面向对象编程么... 没有对象就定义一个... 重点: (十四)魔法方法 魔法方法就是重载,常用得魔法方法有: ...

  5. python笔记-1(import导入、time/datetime/random/os/sys模块)

    python笔记-6(import导入.time/datetime/random/os/sys模块) 一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其它内 ...

  6. 吴恩达《机器学习》学习笔记四——单变量线性回归(梯度下降法)代码

    吴恩达<机器学习>学习笔记四--单变量线性回归(梯度下降法)代码 一.问题介绍 二.解决过程及代码讲解 三.函数解释 1. pandas.read_csv()函数 2. DataFrame ...

  7. 初学者python笔记(内置函数_2)

    这篇初学者笔记是接着上一篇初学者python笔记(内置函数_1)的.同样都是介绍Python中那些常用内置函数的. max()和min()的高级用法 我们都知道,max():取最大值,min():取最 ...

  8. 初学者python笔记(map()函数、reduce()函数、filter()函数、匿名函数)

    文章目录 一.匿名函数 二.map()函数 三.reduce()函数 四.filter()函数 五.三大函数总结 本篇文章内容有Python中的匿名函数和map()函数.reduce()函数.filt ...

  9. ROS学习笔记四:理解ROS节点

    ROS学习笔记四:理解ROS节点 本节主要介绍ROS图形概念,讨论ROS命令行工具roscore.rosnode和rosrun. 要求 要求已经在Linux系统中安装一个学习用的ros软件包例子: s ...

  10. Python笔记day04(基础)|列表、元组

    Python笔记day04(基础) 1,昨日内容及作业讲解 ascii:字母,数字,特殊字符:1个字节,8位 Unicode:16位 两个字节 升级 32 位 四个字节 utf-8:最少一个字节 8位 ...

最新文章

  1. apache ab压力测试
  2. centos 6.x 升级内核
  3. 房产众筹项目质疑声中再推出
  4. 《Splunk智能运维实战》——3.6 制作每一主机不同请求方法数量的图表
  5. STS安装lombok
  6. SpringBoot 异常回滚 事务的使用___Springboot @Transactional 事务不回滚
  7. python打印二进制内容_在python中打印出c类型的二进制表示
  8. Spring MVC的WebMvcConfigurerAdapter用法收集(零配置,无XML配置)
  9. 小程序页面启动过程分析
  10. 使用 PlantUML 绘制时序图
  11. 用POP3获取邮箱邮件内容(完整C#源码)
  12. 添加内核驱动模块(2)(mydriver.c+ Konfig+Makefile )
  13. html如何在手机打开,HTML怎么在手机打开
  14. MATLAB中的单相与三相dq变换模块
  15. Mysql监控工具介绍-Monyog
  16. MacBook连接打印机-惠普HP LaserJet Pro MFP M427fdn 连接方法
  17. 计算机加密怎么设置方法,如何设置电脑密码?手把手教你如何设置电脑Windows密码...
  18. txt.......
  19. 7-6 查询水果价格
  20. 智能机器人与智能系统(大连理工大学庄严教授)——3.工业机器人

热门文章

  1. C语言销售管理系统设计源代码(精)
  2. 企业研发源代码保密软件分析
  3. 2019年--农历己亥猪年
  4. JS奥特曼打怪兽(纯享文档版)
  5. Google的秘密入口及一些彩蛋
  6. IBM SAN交换机升级方法
  7. Zynq-7000系列Quad-SPI I/O接口简介
  8. AMEYA360:电子元器件购买网站有哪些,哪个网站好
  9. android.app.fragment instantiationexception,recreate导致的Fragment报的错误
  10. centos7.8 开启mysql3306端口