• 文件操作主要讲解以下内容:
    • 1.文件本身的操作(python内置)
    • 2.系统中文件和文件夹的操作(os和shutil模块当中)
    • 3.系统路径相关操作(os模块中的子模块 os.path)

文件的基本操作:

  • open() 打开或者创建一个文件
    格式:open('文件路径','打开模式')
    返回值:文件io对象

    打开模式一共N种:

        w模式 写模式write  文件不存在时会创建文件,如果文件已存在则会清空文件

        r模式  读模式read  文件不存在就报错,存在则准备读取文件

        a模式 追加模式 append 文件不存在则新建,文件存在则在文件末尾追加内容

        x模式 抑或模式 xor 文件存在则报错,文件 不存在则新建文件

        b模式 二进制模式 binary 辅助模式不能单独使用

        +模式 增强模式plus  也是辅助模式不能单独使用
  • 以上模式可以互相组合:wrax不可以互相组合:
模式 说明
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
  • close() 关闭文件
格式:文件io对象.close()
返回值:None
  • 示例如下:
    # 新建一个文件,文件名为:test.txt
    f = open('test.txt', 'w')

    # 关闭这个文件
    f.close()

读写函数:

  • read() 读取文件
    格式:文件io对象.read()
    返回值:整个文件的字符

    格式:文件io对象.read(字符长度)
    返回值:指定长度的字符
f = open('test.txt', 'r')

content = f.read(5)

print(content)

print("-"*30)

content = f.read()

print(content)

f.close()
  • readline() 读取一行文件
    格式:文件io对象.readline()
    返回值:一行内容的字符串

    格式:文件io对象.readline(字符长度)
    返回值:一行内容的字符串

    注意:字符长度<当前行内内容,则读取指定长度的字符串,并且下次再读取还是在
          这个一行中获取没有读取的内容。字符长度>=当前行内容,直接读取当前行
#coding=utf-8

f = open('test.txt', 'r')

content = f.readline()
print("1:%s"%content)

content = f.readline()
print("2:%s"%content)

f.close()
  • readlines() 将文件中的内容读取到序列当中。
    格式:文件io对象.readlines()
    返回值:列表

    格式:文件io对象.readlines(字符长度)
    返回值:列表

    注意:读取的行数由字符长度决定,如果字符长度读取了N行后,还有指定长度的字符
          没有读取,则直接读取下一行进来
#coding=utf-8

f = open('test.txt', 'r')

content = f.readlines()

print(type(content))

i=1
for temp in content:
    print("%d:%s"%(i, temp))
    i+=1

f.close()
  • write() 写入文件
    格式:文件io对象.write(字符串)
    返回值:写入字符串的长度
  • writelines() 将序列写入文件中
    格式:文件io对象.writelines(序列)
    返回值:None
  • truncate() 字符串截取操作
    格式:文件io对象.truncate(字节长度)
    返回值:截取的字节长度

OS模块:

  • OS -- 操作系统的简称
  • os模块就是对操作系统进行操作
  • 使用该模块必须先导入模块:
    import os
os模块中的函数:
序号 函数名称 描述 格式
1 getcwd() 获取当前的工作目录 格式:os.getcwd()
返回值:路径字符串
2 chdir() 修改当前工作目录 格式:os.chdir()
返回值:None
3 listdir() 获取指定文件夹中的
所有文件和文件夹组成的列表
格式:os.listdir(目录路径)
返回值:目录中内容名称的列表
4 mkdir() 创建一个目录/文件夹 格式:os.mkdir(目录路径)
返回值:None
5 makedirs() 递归创建文件夹 格式:os.makedirs(路径)
6 rmdir() 移除一个目录(必须是空目录) 格式:os.rmdir(目录路径)
返回值:None
7 removedirs() 递归删除文件夹 格式:os.removedirs(目录路径)
返回值:None
注意最底层目录必须为空
8 rename() 修改文件和文件夹的名称 格式:os.rename(源文件或文件夹,目标文件或文件夹)
返回值:None
9 stat() 获取文件的相关 信息 格式:os.stat(文件路径)
返回值:包含文件信息的元组
10 system() 执行系统命令 格式:os.system()
返回值:整型
慎用! 玩意来个rm -rf 你就爽了!
11 getenv() 获取系统环境变量 格式:os.getenv(获取的环境变量名称)
返回值:字符串
12 putenv() 设置系统环境变量 格式:os.putenv('环境变量名称',值)
返回值:无
注意:无法正常的getenv检测到。
13 exit() 推出当前执行命令,直接关闭当前操作 格式:exit() 返回值:无

当前os模块的值:

序号 函数名称 描述
1 curdir os.curdir 获取当前路径 都是.
2 pardir os.pardir 获取上层目录路径 都是..
3 path os.path os中的一个子模块,操作非常多
4 name os.name 当前系统的内核名称 win->nt linux/unix->posix
5 sep os.sep 获取当前系统的路径分割符号 window -> \ linux/unix -> /
6 extsep os.extsep 获取当前系统中文件名和后缀之间的分割符号,所有系统都是.
7 linesep os.linesep 获取当前系统的换行符号 window -> \r\n linux/unix -> \n
os.environ模块
  • os.environ 可以直接获取所有环境变量的信息组成的字典,如果希望更改环境变量,并且可以查询得到,就需要对os.environ进行操作

  • 该模块的所有方法均是字典的方法,可以通过字典的os.environ的结果进行操作。

  • 注意:无论使用os.getenv,putenv 还是使用os.environ进行环境变量的操作,都是只对当前脚本,临时设置而已,无法直接更新或者操作系统的环境变量设置。

os.path模块
  • os.path是os模块中的子模块,包含很多和路径相关的操作

  • 函数部分:

序号 函数名称 描述 格式
1 abspath() 将一个相对路径转化为绝对路径 格式:os.path.abspath(相对路径)
返回值:绝对路径字符串
2 basename() 获取路径中的文件夹或者文件名称
(只要路径的最后一部分)
格式:os.path.basename(路径)
返回值:路径的最后一部分(可能是文件名也可能是文件夹名)
3 dirname() 获取路径中的路径部分(出去最后一部分) 格式:os.path.dirname(路径)
返回值:路径中除了最后一部分的内容字符串
4 join() 将2个路径合成一个路径 格式:os.path.join(路径1,路径2)
返回值:合并之后的路径
5 split() 将一个路径切割成文件夹和文件名部分 格式:os.path.split(路径)
返回值:元组
6 splitext() 将一个文件名切成名字和后缀两个部分 格式:os.path.splitext(文件名称)
返回值:元组 (名称,后缀)
7 getsize() 获取一个文件的大小 格式:os.path.getsize(路径)
返回值:整数
8 isfile() 检测一个路径是否是一个文件 格式:os.path.isfile(路径)
返回值:布尔值
9 isdir() 检测一个路径是否是一个文件夹 格式:os.path.isdir(路径)
返回值:布尔值
10 getctime() 获取文件的创建时间! get create time 格式:os.path.getctime(文件路径)
返回值:时间戳浮点数
11 getmtime() 获取文件的修改时间! get modify time 格式:os.path.getmtime(文件路径)
返回值:时间戳浮点数
12 getatime() 获取文件的访问时间! get active time 格式:os.path.getatime(文件路径)
返回值:时间戳浮点数
13 exists() 检测指定的路径是否存在 格式:os.path.exists(路径)
返回值:布尔值
14 isabs() 检测一个路径是否是绝对路径 格式:os.path.isabs(路径)
返回值:布尔值
15 islink() 检测一个路径是否是链接 格式:os.path.islink(路径)
返回值:布尔值
16 samefile() 检测2个路径是否指向同一个文件 格式:os.path.samefile(路径1,路径2)
返回值:布尔值