文件

文件:
  文件读写
    读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,
    所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),
    然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。

读文件;
  以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符:
  f = open('/Users/michael/test.txt', 'r')
  标示符'r'表示读,这样,我们就成功地打开了一个文件。
  f.read()
  f.close()--刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入
  read(),会一次性读取文件的全部内容
  read(size),不能确定文件大小,
  readlines(),读配置文件
  readline()和seek()一起用,seek()回到起点位置如:
  tell()方法告诉你文件内的当前位置, 换句话说,下一次的读写会发生在文件开头这么多字节之后
  seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。
  如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。
  # 把指针再次重新定位到文件开头
  position = fo.seek(0, 0)
  要读取非ASCII编码的文本文件,就必须以二进制模式打开,再解码。比如GBK编码的文件:
  >>> f = open('/Users/michael/gbk.txt', 'rb')
  >>> u = f.read().decode('gbk')
  在Python中,文件读写是通过open()函数打开的文件对象完成的。使用with语句操作文件IO是个好习惯。

写文件:
  1、写新文件,覆盖原文件
  2、追加内容
  f = open('/Users/michael/test.txt', 'r')#读文件
  f = open('/Users/michael/test.txt', 'w')#写文件
  f = open('/Users/michael/test.txt', 'a')#追加,
  >>> my_file=open('C:\\Users\\letsgo\\Desktop\\测试笔记\\PythonCode\\23234534231.txt','w')
  >>> print >> my_file, "Hello there ,zhangll" #用print写入文件
  操作文件和目录
  '''
  import os
  # 重命名文件test1.txt到test2.txt。
  os.rename( "test1.txt", "test2.txt" )
  '''
  import os
  # 删除一个已经存在的文件test2.txt
  os.remove("test2.txt")
  '''
  把两个路径合成一个时,不要直接拼字符串,而要通过os.path.join()函数
  操作文件和目录的函数一部分放在os模块中,一部分放在os.path模块中,这一点要注意一下
  幸运的是shutil模块提供了copyfile()的函数,你还可以在shutil模块中找到很多实用函数,它们可以看做是os模块的补充
  '''
  import os
  # 创建目录test
  os.mkdir("test")

  # 删除”/tmp/test”目录
  os.rmdir( "/tmp/test" )

  # 给出当前的目录
  print os.getcwd()

  '''
  ● File 对象方法: file对象提供了操作文件的一系列方法。
  ● OS 对象方法: 提供了处理文件及目录的一系列方法。
  ● 在 write 内容后,直接 read 文件输出会为空,是因为指针已经在内容末尾

序列化:
  我们把变量从内存中变成可存储或传输的过程称之为序列化
  在Python中叫pickling
  反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling
  用Pickle保存那些不重要的数据,不能成功地反序列化也没关系
  >>> d = dict(name='Bob', age=20, score=88)

  >>> f = open('dump.txt', 'wb')
  >>> pickle.dump(d, f)
  >>> f.close()

  >>> f = open('dump.txt', 'rb')
  >>> d = pickle.load(f)
  >>> f.close()
  >>> d


























posted on 2018-01-15 17:24  悬剑  阅读(131)  评论(0编辑  收藏  举报

导航