python基础之文件操作

红太狼 2022-06-17 14:19 338阅读 0赞

文件操作有很多种

  我们在这里可以大体分一下,文件的操作其实可以分为对文件整体的操作(创建文件,删除文件,重命名文件,获取文件属性)以及对文件内容的操作(修改文件内容)

  先来看对文件整体的操作:

我们按照增删查改的顺序进行讲述

1 增

  所谓增,即新建。

新建一个文件

  1. f=open('lalal','w+') #如果该文件(lalal)不存在则创建,若存在则打开。open函数会返回一个文件描述符

新建一个目录:

  1. >>> os.listdir()
  2. ['log', 'test1']
  3. >>> os.mkdir('bin')
  4. >>> os.listdir()
  5. ['log', 'bin', 'test1']

2 删

  所谓删,也就是删除。

删除文件:

  1. >>> import os
  2. >>> os.listdir()
  3. ['log', 'test', 'bin', 'test1']
  4. >>> os.remove('test') #仅仅只能删除文件,如果删除目录的话会报错。 >>> os.listdir()
  5. ['log', 'bin', 'test1']

删除目录:

  1. >>> os.rmdir('bin')
  2. >>> os.listdir()
  3. ['log', 'test1']

3 查

  查看文件的各种属性,如:目录下包含的文件,创建时间 修改时间 访问时间 文件权限 文件大小……

查看目录下包含的文件以及目录:

  1. >>> os.listdir()
  2. ['log', 'bin', 'test1']

获取文件/目录信息:

  1. >>> os.stat('test1')
  2. os.stat_result(st_mode=33188, st_ino=137156, st_dev=2050, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1463225144, st_mtime=1463225144, st_ctime=1463225144)

4 改

修改文件/目录的权限:

ContractedBlock.gif

修改文件内容(读写文件)

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

  我们知道文件对象就是一个类,我们先来看一看python是如何实现这个类的。

ContractedBlock.gif

在这个类中,提供了很多方法供我们操作文件描述符或者说文件实例对象。那么问题来了,如何创建或者说获取一个文件描述符?

使用open获取文件描述符?

复制代码

  1. [root@slyoyo python_test]# cat test1
  2. hello world
  3. >>> f=open('test1','r+') #打开文件
  4. #格式open('file',mode)
  5. file:文件
  6. mode:

  w 以写方式打开,
  a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)
  r+ 以读写模式打开,不清空文件,指针在文件开头。
  w+ 以写读模式打开,会清空文件,指针在文件开头
  a+ 以写读模式打开,不清空文件,指针在文件末尾
  rb 以二进制读模式打开
  wb 以二进制写模式打开
  ab 以二进制追加模式打开
  rb+ 以二进制读写模式打开
  wb+ 以二进制读写模式打开
  ab+ 以二进制读写模式打开

复制代码

如何读文件

fp.read([size]) #size为读取的长度,以byte为单位,如果不输入size的话,默认会读取文件的全部内容

fp.readline([size]) #读一行,如果定义了size,有可能返回的只是一行的一部分。当返回空字符串时,表示文件末尾。

fp.readlines([size]) #把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参              #数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。

复制代码

  1. [root@slyoyo python_test]# cat test1
  2. hello world
  3. my name is liming
  4. i live in shijiazhuang
  5. a city not far from beijing
  6. >>> f=open('test1','r')
  7. >>> f.read()
  8. 'hello world\nmy name is liming\ni live in shijiazhuang\na city not far from beijing\n'
  9. >>> f=open('test1','r')
  10. >>> f.readline()
  11. 'hello world\n'
  12. >>> f=open('test1','r')
  13. >>> f.readlines()
  14. ['hello world\n', 'my name is liming\n', 'i live in shijiazhuang\n', 'a city not far from beijing\n']

复制代码

如何写文件?

fp.write(str) #把str写到文件中,write()并不会在str后加上一个换行符

fp.writelines(seq) #把seq的内容全部写到文件中(多行一次性写入)。这个函数也只是忠实地写入,不会在每行后面加上任何东西。

复制代码

  1. >>> f=open('test1','w+')
  2. >>> f.read()
  3. '' #当以写入的方式打开一个文件时,文件的原内容就不存在了
  4. >>> sentence=["Everbody will make mistakes\n","that's why they put erasers on the end of pencils.\n"]
  5. >>> f.writelines(sentence)
  6. >>> f.readlines()
  7. [] #即使写入了内容,新内容仍无法见。
  8. >>> f.close()
  9. >>> f=open('test1','r')
  10. >>> f.read()
  11. "Everbody will make mistakes\nthat's why they put erasers on the end of pencils.\n"

复制代码

其他方法:

fileobj.seek(offset,whence=0) 从文件中移动off个操作标记(文件指针),正往结束方向移动,负往开始方向移动。如果设定了whence参数,就以whence设定的起始位为 准,0代表从头开始,1代表当前位置,2代表文件最末尾位置。

fileobj.tell() 返回指针的位置

ContractedBlock.gif 示例

fileobj.flush() 打开文件后,实际上就是在内存中对文件进行修改,使用flush则会将内存中的内容保存到磁盘上。close也有这样的功能。

发表评论

表情:
评论列表 (有 0 条评论,338人围观)

还没有评论,来说两句吧...

相关阅读

    相关 python基础教程-文件操作

     一、文件操作       打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。 打开文件的模式有:

    相关 python基础文件操作

    文件操作有很多种   我们在这里可以大体分一下,文件的操作其实可以分为对文件整体的操作(创建文件,删除文件,重命名文件,获取文件属性)以及对文件内容的操作(修改文件内容)

    相关 python基础文件操作

    一、文件介绍 1、什么是文件 狭义说:文本文件;广义说:超文本文件, 图片,声音,超链接,视频。 2、文件的分类 文件大体上可以分为两类,文件文件和二进制文件。