python 读写文本文件,python提取中文文本内容

  python 读写文本文件,python提取中文文本内容

  读文件

  1.打开一个文件用open()方法 (open()返回一个文件对象,它是可迭代的):

  F=open(test.txt , R )注意:R表示文本文件,rb表示二进制文件。(该模式参数的默认值为r)

  如果文件不存在,open()函数会抛出一个IOError错误,并给出一个错误代码和详细信息告诉你文件不存在:

  f=open(test.txt , r)Traceback(最近一次调用last): File stdin ,第1行,inmodulefilenotfoundeerror:[errno 2]没有这样的文件或目录: test.txt 文件在使用后必须关闭,因为File对象会占用操作系统的资源,操作系统可以同时打开的文件数量是有限的。

  F.close()因为在读写文件时可能会发生IOError,一旦发生错误,下面的f.close()就不会被调用。所以,为了确保文件无论是否有错误都能被正确关闭,我们可以使用try.最终实现:

  Try: f=open (/path/to/file , r) print (f.read())最后:if f: f.close()但是每次都这样写太繁琐了,所以Python引入了with语句为我们自动调用close()方法:

  用open(/path/to/file , r )作为f: print(f.read())2. python文件对象提供了三个“读”方法: read()、readline() 和 readlines()。每种方法可以接受一个变量以限制每次读取的数据量。

  Read()每次读取整个文件时,通常用来将文件的内容放入一个字符串变量中。如果文件大于可用内存,为了安全起见,可以重复调用read(size)方法来读取最多size字节的内容。readlines()的区别在于后者一次读取整个文件,比如。阅读()。readlines()自动将文件内容分析成一个行列表,可以由Python的for.在.结构。Readline()一次只读取一行,通常比readlines()慢很多。Readline()应该只在没有足够的内存来一次读取整个文件时使用。注意:这三种方法都是读入每行末尾的 \n 。默认情况下,它不会删除“\n”,因此我们需要手动删除它。

  In [2]: with open (test1.txt , r) asf1: list1=f1。[3]中的readlines():list 1 out[3]:[ 111 \ n , 222 \ n , 333 \ n ,

  In[4]: with open(test1.txt , r )as f1:list 1=f1 . readlines()for I in range(0,len(list1)): list1[i]=list1[i]。rst rip( \ N )in[5]:list 1 out[5]:[ 111 , 222 , 333 , 444 , 555 , 666] For read()和readline(), \ N 也是读入的,但print的

  In[7]: with open(test1.txt , r )as f1:list 1=f1 . read()In[8]:list 1 out[8]: 111 \ n222 \ n333 \ n444 \ n555 \ n666 \ n In[9]:print(list 1)1112223334445555666 In[10]:with open( test1 . txt , r )as f1:list 1=f1 . readline()[11]:list

  有两个文件,每个都有多行ip地址。在两个文件中找到相同的ip地址:

  # coding:utf-8import等分with open(test1.txt , r )as f1:list 1=f1 . readlines()for I in range(0,len(list1)): list1[i]=list1[i]。strip(\ n)with open(test2.txt , r )as F2:list 2=F2 . readlines()for I in range(0,len(list2)): list2[i]=list2[i]。strip( \ n )list 2 . sort()len _ 2=len(list 2)same _ data=[]for I in list 1:pos=biquite . biquite _ left(list 2,I)if pos len(list 2)and list 2[pos]==I:same _ data . append(I)same _ data=list(set(same _ data))print(same _ data)的要点是:(1)用with (2)处理行尾的 \ n 。(4)使用set进行快速重复数据消除。

  3.写文件写文件和读文件是一样的。唯一的区别是,当调用open()函数时,传入的标识符“w”或“wb”表示写入文本文件或写入二进制文件:

  F=open(test.txt , w) #如果是 wb ,表示要写二进制文件f.write(Hello,world!)f.close ()一个python面试题的例子:: W 这个图案是酱紫的:如果没有这个文件,创建一个;如果是这样,那么在写入新内容之前,原始文件的内容将被清除。所以,如果不想清空原有内容而是直接在后面添加新内容,就用‘a’模式。

  我们可以反复调用write()来写文件,但是一定要调用f.close()来关闭文件。我们写文件的时候,操作系统往往不会马上把数据写到磁盘,而是放在内存缓存里,等我们空闲的时候再慢慢写。只有在调用close()方法时,操作系统才保证将所有未写入的数据写入磁盘。忘记调用close()的后果是,可能只有一部分数据被写入磁盘,其余的都丢失了。因此,使用with语句仍然是安全的:

  用open(test.txt , w )作为f: f.write(Hello,world!)python文件对象提供了两个“写”方法:write()和writelines()。

  write()方法对应于read()和readline()方法,并将字符串写入文件。writelines()方法对应于readlines()方法,也是注意的操作。它接收列表参数并将它们写入文件。换行符不会自动添加,所以需要显式添加换行符。F1=open (test1.txt , w) f1.writelines ([1 , 2 , 3]) #此时test1.txt的内容为:123f1=open (test1.txt , w) f1.writelines ([

  字符串列表:

  r :读

  w :写

   a :附加

  R==r w(可读可写,如果文件不存在,将报告IOError)。

  W==w r(读写,如果文件不存在就创建它)

  A==a r(可以追加和写入,不存在会创建文件)

  相应的,如果是二进制文件,只需加一个B:

   rbwbabrb wb ab

  4. 关于open()的mode参数

  file _ obj.seek (offset,when=0)方法用于移动文件中的文件指针。偏移量表示偏移量。可选参数when指示偏移量的起始位置。默认情况下,0是文件的开头,1是当前位置,2是文件的结尾。示例:

  F=open (test1.txt , a )print(f . read())f . write( 1 )f . seek(0,0) #把文件指针从末尾移到开头,没有这句话,下面的read()就读不到正确的东西print(f . read())f . close()file_obj.seek(offset,whence=0):这个文件指针的改变只对 r 起作用,对 w 和 a 不起作用。如果是 w ,那么write()总是从头开始写(它会覆盖后面)

  5.字符编码要读取非UTF 8编码的文本文件,需要将编码参数传递给open()函数。例如,要读取GBK编码的文件:

  F=open (test.txt , r ,encoding= gbk) F. Read () Test 遇到一些编码不规则的文件,你可能会遇到UnicodeDecodeError,因为文本文件中可能会混入一些非法编码的字符。在这种情况下,open()函数还接收一个errors参数,指示遇到编码错误时应该做什么。最简单的方法就是忽略:

  f=open(test.txt , r ,encoding=gbk ,errors=ignore )

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: