老男孩python学习自修【第一天】文件IO用法
第一天 文件IO处理
1.读文件实例
file_split.python
f = file('myFile.txt', 'r')
for line in f.readlines():
line = line.strip('\n').split(':')
print line
myFile.txt
## # User Database # # Note that this file is consulted directly only when the system is running # in single-user mode. At other times this information is provided by # Open Directory. # # See the opendirectoryd(8) man page for additional information about # Open Directory. ## nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false root:*:0:0:System Administrator:/var/root:/bin/sh daemon:*:1:1:System Services:/var/root:/usr/bin/false _uucp:*:4:4:Unix to Unix Copy Protocol:/var/spool/uucp:/usr/sbin/uucico
结果:
['##']
['# User Database']
['# ']
['# Note that this file is consulted directly only when the system is running']
['# in single-user mode. At other times this information is provided by']
['# Open Directory.']
['#']
['# See the opendirectoryd(8) man page for additional information about']
['# Open Directory.']
['##']
['nobody', '*', '-2', '-2', 'Unprivileged User', '/var/empty', '/usr/bin/false']
['root', '*', '0', '0', 'System Administrator', '/var/root', '/bin/sh']
['daemon', '*', '1', '1', 'System Services', '/var/root', '/usr/bin/false']
['_uucp', '*', '4', '4', 'Unix to Unix Copy Protocol', '/var/spool/uucp', '/usr/sbin/uucico']
2.文件读写模式
r 只读
w 只写
a 追加
r+b 读写,文件边写边覆盖,写完不回到开头
w+b 写读,先清空文件所有内容,再写,写完回到开头
a+b 追加及读,在文件末尾追加,写完回到文件开头
f = file('myFile.txt', 'r')
import tab
f.readlines()
f.close()
//这段命令为读取所有行,以只读模式打开则不能写入
f = file('myFile.txt', 'w')
f.write('new line')
f.close()
//以只写模式打开文件,则无法读取文件,写的时候会覆盖
f = file('myFile.txt', 'a')
f.write('second line')
f.write('\nthird line')
f.flush()
//追加方式打开文件,从最后面写入
//文件内容的写入时机:
用户输入内容时,内容存放在缓冲区,当缓冲区的内容大于1M时自动写入文件
调用flush()或者close()方法时将内容从缓冲区写入文件
只读模式下写入文件时报错如下:
>>> f.write('new lines')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: File not open for writing
3.文件的编码:
写入中文实例
#!/usr/bin/env python
#_*_ coding:UTF-8 _*_
f = file('myFile.txt', 'w')
f.write(u'你是小狗'.encode('UTF-8'))
f.flush()
f.close()//注意:写入中文需要制定编码为UTF-8;并且写入时需要指定编码
4.文件io的主要方法:
f.close() 关闭文件
f.closed() 文件是否被其他程序打开后关闭;为False则表示该文件正在被其他程序打开进行写操作
f.mode 文件的读写模式
f.read() 读取文件的所有内容以字符串的方式返回
f.readline() 读取文件的一行以字符串的方式返回
f.readlines() 读取文件的所有内容以列表的方式返回,一次性将文件所有行读取到内存
f.xreadlines() 逐行读,适用于大文件的读操作,使用迭代器实现,每读一行则处理一行
f.writelines() 将字符列表写入文件,列表的一个元素为一行
f.next() 迭代器,f.readlines()内部是使用该方法实现的
f.seek() 跳到文件的第几个字符串前面
f.tell() 告诉我光标在文件的第几个字符的位置
f.truncate() 从文件的第0ge字符开始截断多少个字符,其他的内容删除
5.实战:实现文件的内容全局替换
例如:输入命令 ./file_replace.py old_text new_text file_name则将file_name文件中的old_text改为new_text; 输入命令./file_replace.py old_text new_text file_name --bak则将old_text改为new_text且将原来的文件备份为file_name.bak
file_replace.py
#!/usr/bin/env python
# _*_ coding:UTF-8 _*_
import sys
import os
if len(sys.argv) >= 4:
print "Useage file_replace.py old_text new_text file_name [--bak]"
old_text, new_text, file_name = sys.argv[1], sys.argv[2], sys.argv[3]
else:
print "Parameter Error"
old_file = file(file_name, 'rb')
new_file = file('%s.bak.2' % file_name, 'wb')
for line in old_file.xreadlines():
new_file.write(line.replace(old_text, new_text))
old_file.close()
new_file.close()
if '--bak' in sys.argv:
os.rename(file_name, '%s.bak' % file_name)
os.rename('%s.bak.2' % file_name, file_name)
else:
os.rename('%s.bak.2' % file_name, file_name)
6.作业:员工信息表
(1)用户可以模糊搜索查找用户信息
(2)匹配的信息需要高亮显示
(3)统计共找到了多少条信息
#!/usr/bin/env python
#_*_ coding:UTF-8 _*_
input = raw_input("Please Search:")
f = file("myFile.txt", "rb")
search_count = 0
for line in f.xreadlines():
if input in line:
search_count = search_count + 1
new_line = line.replace(input, "\033[1;31;40m %s \033[0m" % input)
print new_line
print "Found %d Record" % search_count
结果:
liudaoqangdeAir:day05 liudaoqiang$ python file_search.py Please Search:root root :*:0:0:System Administrator:/var/ root :/bin/sh daemon:*:1:1:System Services:/var/ root :/usr/bin/false _cvms root :*:212:212:CVMS Root:/var/empty:/usr/bin/false Found 3 Record
扩展:打印的颜色和背景色
前景色: 30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋 红)、36(青色)、37(白色)
背景色: 40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、45(洋 红)、46(青色)、47(白色)
\033[0m 默认字体正常显示,不高亮
\033[32;0m 红色字体正常显示
\033[1;32;40m 显示方式: 高亮 字体前景色:绿色 背景色:黑色
\033[0;31;46m 显示方式: 正常 字体前景色:红色 背景色:青色
老男孩python学习自修【第一天】文件IO用法的更多相关文章
- Python学习(15)文件/IO
目录 Python 文件I/O 打印到屏幕 读取键盘输入 打开和关闭文件 File对象属性 文件定位 重命名和删除文件 Python的目录 Python 文件I/O 本章只讲述所有基本的的I/O函数, ...
- 老男孩 python学习自修第二十二天【文件上传与下载】
1.使用socket实现文件上传 server.py #!/usr/bin/env python # _*_ coding:UTF-8 _*_ import os import SocketServe ...
- 老男孩python学习自修第十六天【常用模块之sys和os】
例子: sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys. ...
- 老男孩python学习自修第十九天【异常处理】
1.常见的错误 TypeError 类型错误 NameError 没有该变量 ValueError 不期望的值 AttributeError 没有该属性 UnboundLocalError 没有该局部 ...
- 老男孩python学习自修第十一天【内置函数】
1.基本内置函数 help() 帮助文档 dir() 列出当前文件的所有变量和方法 vars() 列出当前文件的所有变量及其值 type() 返回变量的类型 id() 返回变量的内存地址 len() ...
- 老男孩python学习自修第六天【pycharm的使用】
1.在工程右键可选新建文件夹,包盒python文件 文件夹和包的区别在于,包包含一个空的__init__.py文件,而文件夹没有 2.pycharm的断点调试 点击Debug表示进入调试状态 点击Re ...
- 老男孩python学习自修第二十一天【socket】
1. 使用python编写一个静态的web服务器,能够处理静态页面的http请求 原理: a. 使用socket进行服务端和浏览器之间的通信 b. 使用多线程处理多个客户端浏览器的请求 c. 解析用户 ...
- 老男孩python学习自修第二十四天【多进程】
1. 体验多进程的运行速度 #!/usr/bin/env python # _*_ coding:UTF-8 _*_ from multiprocessing import Pool import t ...
- 老男孩python学习自修第二十三天【多线程】
1. 线程的创建与运行 #!/usr/bin/env python # _*_ coding:UTF-8 _*_ from threading import Thread def foo(param1 ...
随机推荐
- (二)JavaScript 输出
avaScript 没有任何打印或者输出的函数. JavaScript 显示数据 JavaScript 可以通过不同的方式来输出数据: 使用 window.alert() 弹出警告框. 使用 docu ...
- Flask中无法在其他函数中查询Sqlachemy的解决办法
报错信息部分截取: File "D:\python 3.5\lib\site-packages\flask_sqlalchemy\__init__.py", line 912, i ...
- 给大家推荐一个C#下文件监听器和资源管理器的示例Demo-含源码
C#下文件监听器和资源管理器的示例Demo:源码下载地址
- HAProxy 参数配置
RabbitMQ集群部署完成,通过HAProxy反向代理来提供统一的对RabbitMQ的访问入口. 1.Haproxy提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理.(负载均衡策略有很 ...
- Jmeter(三十八)while控制器实现ssh三次重连
在jmeter中,可以使用SSH协议连接主机进行相关操作, 步骤如下 首先添加一个ssh command 我们的测试交流群:317765580 在command中填写远程连接的必要信息 结果树中可以 ...
- Python-SMTP发送邮件(HTML、图片、附件)
前言: SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. 一.Python发送HTML ...
- H5 CSS的格式
02-CSS的格式 标签名称{ 属性名称: 属性对应的值; ... } 2.注意点: 1.style标签必须写在head标签的开始标签和结束标签之间(也就是必须和title标签是兄弟关系) 2.sty ...
- Python-类的组合与重用
软件重用的重要方式除了继承之外还有另外一种方式,即:组合 组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合 1.继承的方式 通过继承建立了派生类与基类之间的关系,它是一种'是'的关系 ...
- Innodb日志与事务
1.Innodb日志: 错误日志:记录出错信息,也记录一些警告信息或者正确的信息. 查询日志:记录所有对数据库请求的信息,不论这些请求是否得到了正确的执行. 慢查询日志:设置一个阈值,将运行时间超过该 ...
- c语言之字符输入输出和输入验证
单字符I/O:getchar()和putchar() #include<stdio.h> int main(void) { char ch; while ((ch = getchar()) ...