sdtf08 发表于 2018-8-9 13:12:04

13. Python 文件操作

  1.      简单的读取文件内容(codecs的使用)
  当前目录下有个1.txt的文档
  打开文件的步骤:
  import codecs
  (1)open文件
  f = codecs.open('1.txt')
  (2)文件操作(读或写)
  print (f.read())
  (3)关闭文件
  f.close()
  结果如下:

  这个方法等于把整个文件拿出来,当成一个字符串来使用,后期用正则匹配的时候,非常方便、适用。
  【codecs 这个模块,是open打开文件的时候,引入这个模块,用途:解决文件乱码的。推荐以后在读写的时候使用这个模块】
  如果设:
  text = f.read()
  查看text的类型:
  print (type(text))
  查看到类型是"str"(字符串)
  类型是字符串,我们就可以使用字符串的方法:
  result = text.replace('1', 'A')
  print (result)
  2.      写入一个新的文件
  import codecs
  f = codecs.open('2.txt', 'w')
  f.write('hello world!\n')
  f.write('hello {0}!\n'.format('LLN'))
  f.write('you cool!\n')
  f.write('I like it!\n')
  f.close()
  注释:
  # open(filename, mode)
  # mode有几个参数:
  r读取
  w写入
  b二进制
  a追加
  3.   文件操作常用用法
  readlins() 方法:
  此方法,读取文件,把每一行都变成单独的字符串,并放入到一个列表中去,第一行为列表的第一个元素,以此类推。
  举例:
  import codecs
  f = codecs.open('1.txt', 'rb')
  t_list = f.readlines()
  print (t_list
  print (f.readlines())
  f.close()
  返回结果:
  1111111111第一行
  []
  注释:
  为什么 print (f.readlines()) 会返回空列表?
  因为之前readlines()已经将文件读到末尾了,下次再用readlines()方法读的时候,会从文章最末尾开始读取,所以结果为[]。
  readline() 方法:
  此方法,读取文件,每一个readline()只读取一行,光标会停留在下一行的开头;
  在执行下一个readline()的时候,会从光标处读取当前这一行。
  import codecs
  f = codecs.open('1.txt', 'rb')
  print (f.readline())
  print (f.readline())
  print (f.readline())
  print (f.readline())
  print (f.readline())
  f.close()
  返回结果:
  1111111111
  aaaaaaaaaa
  2222222222
  bbbbbbbbbb
  3333333333
  next()方法:
  对比:
  readline() 读取文件一行内容,返回一个字符串
  next() 读取文件下一行内容返回一个字符串
  write()方法和writelines()方法:
  write() 必须传入一个(整个)字符串
  writelines() 必须传入一个序列
  举例1:
  import codecs
  f = codecs.open('2.txt', 'wb')
  f.write('hello lili\n cccccccc\n aaaaaaaaaa\n')## 一个整的字符串
  f.close()
  可以看到多出来一个文件:

  文件内容:

  举例2:
  import codecs
  f = codecs.open('2.txt', 'wb')
  f.writelines(['aaaaa\n','bbbbbbbb\n','cccccccc']) ##传入一个列表(序列)
  f.close()
  可以看到多出来一个文件的内容:

  tell()方法:
  提示当前光标落在哪个字符位置上
  举例:
  import codecs
  f = codecs.open('3.txt', 'wb')
  f.writelines(['aaaaa\n','bbbbbbbb\n','cccccccc'])
  print f.tell()
  f.close()
  返回:
  23
  seek()方法:
  指定光标的位置,seek(0)是移动到文章开头
  举例:
  import codecs
  f = codecs.open('3.txt', 'wb')
  f.writelines(['aaaaaaaaaaaaaaa\n','bbbbbbbbbbbbb\n','cccccccc\n'])
  print f.tell()
  f.seek(0)
  f.write('sssssssssssssssss')##重新写入
  f.close()
  返回结果:
  sssssssssssssssssbbbbbbbbbbbb
  cccccccc
  从结果看出,将光标移动到开头后,并在开头写入字符串,并替换掉原有字符串对应的位置的字符,文件总长度不变。
  4.with的特殊用法
  举例:
  import codecs
  with codecs.open('1.txt', 'rb') as f:
  print (f.read())
  这种方法不需要写close(),在执行完成后,会自动关闭文件。
  拓展:
  打印文件指定行的内容:
  方法一:
  import codecs
  with codecs.open('1.txt', 'rb') as f:
  for line, value in enumerate(f):
  if line == 4-1:#打印第四行的内容,下标为3
  print (value)
  方法二:(python有个自带的方法)
  import linecache
  count = linecache.getline(filename,linenum)
  举例:
  import linecache
  count = linecache.getline('1.txt',4)   ##下标为3
  print count
页: [1]
查看完整版本: 13. Python 文件操作