2.5 Python文件操作

  • 2.5 Python文件操作


2.5 Python文件操作

  • 文件操作主要讲解以下内容:
  • 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(‘环境变量名称’,值)

返回值:无

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(相对路径)

返回值:绝对路径字符串

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

检测一个路径是否是一个文件

检测一个路径是否是一个文件

格式: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)

返回值:布尔值