1、操作文件的函数/方法

 

  • Python 中要操作文件需要记住 1 个函数和 3 个方法

 

 

  • open 函数负责打开文件,并且返回文件对象
  • read/write/close 三个方法都需要通过 文件对象 来调用

 

read 方法 —— 读取文件

 

  • open 函数的第一个参数是要打开的文件名(文件名区分大小写)
    • 如果文件 存在,返回 文件操作对象
    • 如果文件 不存在,会 抛出异常
  • read 方法可以一次性 读入返回 文件的 所有内容
  • close 方法负责 关闭文件
    • 如果 忘记关闭文件会造成系统资源消耗,而且会影响到后续对文件的访问
  • 注意read 方法执行后,会把 文件指针 移动到 文件的末尾
# 1. 打开 - 文件名需要注意大小写
file = open("README")

# 2. 读取
text = file.read()
print(text)

# 3. 关闭
file.close()

 

提示

  • 在开发中,通常会先编写 打开关闭 的代码,再编写中间针对文件的 读/写 操作!

文件指针(知道)

  • 文件指针 标记 从哪个位置开始读取数据
  • 第一次打开 文件时,通常 文件指针会指向文件的开始位置
  • 当执行了 read 方法后,文件指针 会移动到 读取内容的末尾
    • 默认情况下会移动到 文件末尾

思考

  • 如果执行了一次 read 方法,读取了所有内容,那么再次调用 read 方法,还能够获得到内容吗?

答案

  • 不能
  • 第一次读取之后,文件指针移动到了文件末尾,再次调用不会读取到任何的内容

 打开文件的方式

  • open 函数默认以 只读方式 打开文件,并且返回文件对象

语法如下:

f = open("文件名", "访问方式")

 

 

提示

  • 频繁的移动文件指针,会影响文件的读写效率,开发中更多的时候会以 只读只写 的方式来操作文件

写入文件示例

# 打开文件
f = open("README", "w")

f.write("hello python!\n")
f.write("今天天气真好")

# 关闭文件
f.close()

 

按行读取文件内容

  • read 方法默认会把文件的 所有内容 一次性读取到内存
  • 如果文件太大,对内存的占用会非常严重

readline 方法

  • readline 方法可以一次读取一行内容
  • 方法执行后,会把 文件指针 移动到下一行,准备再次读取

读取大文件的正确姿势

# 打开文件
file = open("README")

while True:
    # 读取一行内容
    text = file.readline()

    # 判断是否读到内容
    if not text:
        break

    # 每读取一行的末尾已经有了一个 `\n`
    print(text, end="")

# 关闭文件
file.close()

 

 fr=a.read()  #一次读取文件内所有行内容

 fr1=b.readline()  #每次读取文件一行,知道全部读完

 fr2=c.readlines()  #读取文件内全部内容

 

 

 

2、文件/目录的常用管理操作 

 

 

 

 

os.path.join() 

输入:字符串

返回:该系统上的正确的文件路径格式

import os
>>>os.path.join('usr','bin','spam')
'usr\\bin\\spam'

文件夹路径操作

os.getcwd() :获取当前工作目录

os.chdir(path) :改变当前工作目录

.:当前目录    ..:当前目录的父目录

os.makedirs(path):创建新文件夹

os.path.abspath(path):将返回参数的绝对路径的字符串。

os.path.isabs(path):如果参数是一个绝对路径,就返回 True,如果参数是
          一个相对路径,就返回 False

os.path.relpath(path, start):将返回从 start 路径到 path 的相对路径的字符串。
              如果没有提供 start,就使用当前工作目录作为开始路径

查看文件大小和文件夹内容
os.path.getsize(path):将返回 path 参数中文件的字节数。

os.listdir(path)将返回文件名字符串的列表

检查路径有效性

如果 path 参数所指的文件或文件夹存在, 调用 os.path.exists(path)将返回 True否则返回 False
如果 path 参数存在,并且是一个文件,调用 os.path.isfile(path)将返回 True否则返回 False
如果 path 参数存在,并且是一个文件夹, 调用 os.path.isdir(path)将返回 True否则返回 False

 

请注意, write()方法不会像 print()函数那样,在字符串的末尾自动添加换行字符。必须自己添加该字符。

 

 

 

 

posted on 2018-12-14 18:26  一抹烟霞  阅读(137)  评论(0编辑  收藏  举报

Live2D