设为首页 收藏本站
查看: 1110|回复: 0

[经验分享] python进阶学习笔记(一)

[复制链接]

尚未签到

发表于 2015-4-22 10:15:41 | 显示全部楼层 |阅读模式
  同样是《python基础教程(第二版)》的内容,只是后面内容学起来,相比前面会比较有趣,也更加实用,所以,将“基础”改为“进阶”。
  python 电子书分享地址:http://yunpan.cn/Q2U87uGrNiTA3
  
  本节讲文件的操作
  -------------------------------

打开文件

open函数用来打开文件,语法如下:
open(name[, mode[,buffering]])
open函数使用一个文件名作为唯一的强制参数,然后返回一个文件对象。假设我要打开我硬盘(I:/python/test.txt) 文件,可以用下面方法:



>>> f = open(r'i:\python\test.txt')

open函数中模式参数的常用值
DSC0000.png


基本文件方法

打开文件是第一步,下面就需要对文件进行读或写,可以write 和 read方法进行读或写。



#写入文件内容
>>> f = open('test.txt','w')
>>> f.write('hello,')
>>> f.write('world!')
>>> f.close()
# 读取文件内容
>>> f = open('test.txt','r')
>>> f.read(4)   #读取前4个字符
'hell'
>>> f.read()   #读取剩余的所有字符
'o,world!'

关闭文件
  应该牢记使用close方法关闭文件。尽管一个文件对象在退出程序后会自动关闭,但关闭文件是没什么害处的,可以避免在某些操作系统或设置中进行无用的修改,这样做也会避免用完系统中打开文件的配额。


使用基本文件方法

假如test.txt文件包含如下内容:
-----------------------------
Welcome to this file
There is nothing here except
This stupid haiku
-----------------------------
下面是基本读文件的方法:



# read(n) 指定参数
>>> f = open(r'I:\python\test.txt')
>>> f.read(7)
'Welcome'
>>> f.read(4)
' to '
>>> f.close()
# read() 不指定参数
>>> f = open(r'I:\python\test.txt')
>>> print f.read()
Welcome to this file
There is nothing here except
This stupid haiku
>>> f.close()
# readline()
>>> f = open(r'I:\python\test.txt')
>>> for i in range(3):
print str(i) + ':' + f.readline()

0:Welcome to this file
1:There is nothing here except
2:This stupid haiku
>>> f.close()
#readlines()
>>> import pprint
>>> pprint.pprint(open(r'I:\python\test.txt').readlines())
['Welcome to this file\n',
'There is nothing here except\n',
'This stupid haiku']
readline返回一行的字符串, readlines返回包含文件所有内容的字符串列表, 每个元素是一行的字符串。
pprint 模块的pprint方法将内容分成每个小项单行显示。

下面是写文件的基本方法:



>>> f = open(r'I:\python\test.txt','w')  #默认是读文件,可以不加‘r’,写文件一定要加’w’
>>> f.write('this\nis no \nhaiku')
>>> f.close()
DSC0001.png
  



>>> f = open(r'I:\python\test.txt')
>>> lines = f.readlines()
>>> lines[1] = "isn't a\n"
>>> f = open(r'I:\python\test.txt','w')
>>> f.writelines(lines)
>>> f.close()
DSC0002.png


对文件内容进行迭代

1、接字节处理
最常见的对文件内容进行迭代的方法是while循环中使用read方法。例如,对每个字符进行循环,可以用下面方法实现:



f = open(filename)
char = f.read(1)
while char:
process(char)
char = f.read(1)
f.close()
read方法返回的字符串会包含一个字符,直到文件末尾,read返回一个空的字符串,char将变为假。
可以看到,char = f.read(1) 被重复地使用,代码重复通过被认为是一件坏事,看看下面的方法:



f = open(filename)
while True:
char = f.read(1)
if not char: break
process(char)
f.close()
这里break语句被频繁的使用(这样会让代码比较难懂),尽管如此,但它仍然要比前面的方法好。

2、读取所有内容
如果文件不是很大,那么可以使用不带参数的read方法一次读取整个文件,或者使用readlines方法。



#用read迭代每个字符
f = open(filename)
for char in f.read():
process(char)
f.close()


#用readlines迭代行:
f = open(filename)
for line in f.readlines():
process(line)
f.close()

3、用fileinput 来进行迭代
fileinput模块包含了打开文件的函数,,只需要传一个文件名给它



import fileinput
for line in fileinput.input(filename):
process(line)

4、文件迭代器
好吧!这是python2.2之后才有的方法,如果它一开始就有,上面的方法也许就不存在了。文件对象是可以迭代的,这就意味着可以直接在for循环中对他们进行迭代



f = open(filename)
for line in f:
process(line)
f.close()

  
再来看下面例子:



>>> f = open(r'I:\python\test.txt','w')
>>> f.write('First line\n')
>>> f.write('Second line\n')
>>> f.write('Third line\n')
>>> f.close()
>>> lines = list(open(r'I:\python\test.txt'))
>>> lines
['First line\n', 'Second line\n', 'Third line\n']
>>> first,second,third = open(r'I:\python\test.txt')
>>> first
'First line\n'
>>> second
'Second line\n'
>>> third
'Third line\n'
在这个例子中:



  • 使用序列来对一个打开的文件进行解包操作,把每行都放入一个单独的变理中,这么做是很有实用性的,因为一般不知道文件中有多少行,但它演示的文件的“迭代性”。
  • 在写文件后一定要关闭文件,这样才能确保数据被更新到硬盘。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-59524-1-1.html 上篇帖子: Python学习笔记(2) 下篇帖子: Vim as Python IDE on windows(转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表