专栏首页Python 知识大全掌握了它,操作文件 so easy

掌握了它,操作文件 so easy

阅读本文需要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('环境变量名称',值)返回值:无注意:无法正常的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)返回值:布尔值

本文分享自微信公众号 - Python 知识大全(TuoLaJi522),作者:杨大厅长

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python 文件I/O

    Python提供了必要的函数和方法进行默认情况下的文件基本操作。你可以用file对象做大部分的文件操作。

    Python知识大全
  • 爬取王者农药英雄全部信息, 长知识了!!!

    老话说的好 :“知己知彼, 百战不殆“, 为此, 本狗爬取了所有英雄的属性。由于数据太多, 本狗只选取了部分属性。

    Python知识大全
  • 必掌握的技巧之一

    结果会返回目录中所有文件列表,包括所有文件,子目录,符号链接等等。如果你需要通过某种方式过滤数据,可以考虑结合 os.path 库中的一些函数来使用列表推导。

    Python知识大全
  • 【AI核心技术】课程十四:序列场景分析

    UAI与PaddlePaddle联合推出的【AI核心技术掌握】系列课程持续更新中!

    用户1386409
  • centos下无污染地打rpm包

    jeremyxu
  • 51一面面经

    牛客网
  • MongoDB与python交互1.Pymongo2.安装3.使用4.mongoDB其它操作5.Mongodb与python交互6.完成命令行项目:学生信息管理(基于Python2.7)

    PyMongo是Mongodb的Python接口开发包,是使用python和Mongodb的推荐方式。

    意气相许的许
  • 软件安全性测试(连载20)

    对于一个WEB系统,一般都是通过注册用户,然后用注册的信息登录系统来进行认证的。在这个过程中会需要考虑以下几点。

    小老鼠
  • VisualStudio 使用多个环境进行调试

    在 VisualStudio 2017 支持使用 launchSettings.json 文件定义多个不同的环境进行调试

    林德熙
  • KOL慎入!你粉丝没了

    你是品牌方营销人,经常去找网红经纪人买流量。你老板看了最近刷屏的丑闻,特别嘱咐你「千万别花冤枉钱」。现在你有个内容,经纪人推荐了几个微博KOL,你该把钱花在谁身...

    用户1569917

扫码关注云+社区

领取腾讯云代金券