zoukankan      html  css  js  c++  java
  • python--文件处理1

    1.     读取文件
    方法: all_the_text = open('thefile.txt').read()
    但是为了安全起见还是给打开的文件对象指定一个名字,这样在完成之后可以迅速关掉,防止无用文件对象占用内存;
    例子:
    file_object = open('thefile.txt',r)
    try:
         all_the_text = file_object.read()            #read()将文件中所以字符都读到all_the_text中去变成了一个巨大的字符串,
    finally:
         file_object.close()

    不一定要加try,finally语句,但是加了更好,可以保证文件对象被关闭即使在读取中发生了严重错误;
     
     
    如果要读入100个字符也可以直接:
    text=file.read(100),
     
    如要一行行处理还可以:
    ff = file_object.readlines()
      #读出来是 list 类型,而且每行末尾都有' '符号;既然是一行行的,那么打印也要一行行的显示:
      for line in ff:
           print line            #此时line类型是string,而ff依然是list类型
      #这样打印出来不会乱,而如果直接 print   ff 则会一次性打印整个ff序列,而汉子在序列里面是ASCII,会导致汉子打印不出来,而且特别乱;所以要一行行的打印’
     
    而最简单方法:
    for line in file_object:
         line = line.rstrip('
    ')
         print line
    此时line是string类型,但每行末尾都有'
    '符号;可以再for主体部分加一句:line = line.rstrip('
    ') 在每行末尾去掉'
    '符号,而line.restrip()则默认去掉空白符;
     
    2.    写入文件
    最方便的一个方法:
     
    open('thefile.txt','w').write(all_the_text)
    

      

    但是最好还是给文件对象指定一个名字,这样方便关闭文件对象
    file_object = open('thefile.txt','w')
    file_object.write(all_the_text)
    file_object.close() 
     
    实际上用‘w’或者'wb'打开的文件,都是空文件;哪怕是这个文件不是空文件,用这两种方式打开后,也会被清空;这种情况,就要用到‘a’或者‘ab’来打开则不会清空;
    如果用'a+'这种方式来打开的话不能写的时候文件不会被清空,而且还可以读取文件呢;
    注意:无论读还是写,文件打开之后游标会一直往后走,直到关闭;当然也可以使用seek()函数来控制游标
     
    3.    搜索和替换文件中的文本
    replace(search_text,replace_text),用于字符串的替换;
     
    4.    从文件中读取指定的行
    enumerate():遍历序列中的元素以及下标
    >>> for i,j in enumerate(['a','b','c']):
    ...     print i,j
    ...
    0 a
    1 b
    2 c
    

      

    函数模块:
    def getline(thefilepath,desired_line_number):
         if desired_line_number < 1:
              return ' '
         for current_line_number,line in enumerate(open(thefilepath,'ru')):
              if current_line_number == desired_line_number-1:
                        return line
         return ''
     
    库文件 linecache
    当对文件进行多次读取时,linecache,特别有用,它读取并缓存指定文件里的所有文本;用clearcache()来释放被用作缓存的内存,checkcache()来确保缓存中的存储是最新的;
     
    import linecache
    theline = linecache.getline(thefilepath,desired_line_number)
    #简单一句就可以得到文件指定行的文本了,方便吧;
    

      

     
    5.    处理文件中的每一个单词
    首先看一个函数split()
    Python split()通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串
    实例:
    #!/usr/bin/python
    str = "Line1-abcdef 
    Line2-abc 
    Line4-abcd";print str.split( );print str.split(' ', 1 );
    以上实例输出结果如下:
    
    ['Line1-abcdef', 'Line2-abc', 'Line4-abcd']['Line1-abcdef', '
    Line2-abc 
    Line4-abcd']
     
    对每一个词做一些处理,最好的就是两重循环,一个用于处理行,一个用于处理单词
    for line in open(thefilepath):
         for word in line.split():
              dosometingwith(word)
    
    6. 处理zip数据
    6.1 从zip文件中读取数据
    任务检查一个zip文档中所有子项,并打印子项名称,以及大小;
    #!/usr/bin/env python
    #encoding:utf-8
    import zipfile
    #以’r‘打开zip文件,
    z = zipfile.ZipFile("text.txt.zip","r")
    #从zip文件列表中读取子项名并读取出来计算其字节数
    for filename in z.namelist():
            print 'File:',filename
    
            byte = z.read(filename)
    
            print 'has',len(byte),'byte'
     
  • 相关阅读:
    自动机实验
    11.11评论
    语法分析
    201406114257 张俊毅 词法分析 修改完
    201406114257 张俊毅 词法分析
    做汉堡
    复利计算5.0-结队
    《构建之法》第4章的感悟
    复利计算4.0单元测试
    实验一 命令解释程序的编写
  • 原文地址:https://www.cnblogs.com/Aiapple/p/5388679.html
Copyright © 2011-2022 走看看