python进阶学习笔记(一)

系统 1623 0

python进阶学习笔记(一)

2013-05-22 00:22  虫师 阅读( ... ) 评论( ... ) 编辑 收藏

同样是《python基础教程(第二版)》的内容,只是后面内容学起来,相比前面会比较有趣,也更加实用,所以,将“基础”改为“进阶”。

python 电子书分享地址: http://yunpan.cn/Q2U87uGrNiTA3

 

本节讲文件的操作

-------------------------------

 

打开文件

 

open 函数用来打开文件,语法如下:

open(name[, mode[,buffering]])

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

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

 

open 函数中模式参数的常用值

python进阶学习笔记(一)_第1张图片

 

 

基本文件方法

 

打开文件是第一步,下面就需要对文件进行读或写,可以 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()
              

python进阶学习笔记(一)_第2张图片

 

                >>> 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()
              

python进阶学习笔记(一)_第3张图片

 

 

对文件内容进行迭代

 

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
                
                
                  '
                
              

在这个例子中:

 

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

 

 


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论