文件的基本操作

概念

  • 在计算机中,文件是以 二进制 的方式保存在磁盘上的
  • 文本文件  二进制文件
  • 文本文件(用记事本打开能直接能看懂的)
  • 可以使用 文本编辑软件查看
  • 本质上还是二进制的,比如 Python的源码文件
  • 二进制文件(用记事本打开看不懂的)
  • 保存的内容无法直接阅读,而是 提供给其他软件使用
  • 比如:图片、音频、视频 文件等
  • 文件操作的三个步骤
  • 打开文件
  • 读、写文件
  • 读:将文件读入内存
  • 写:将内存中的数据写入文件
  • 关闭文件

操作文件的函数/方法

  • open 函数负责打开文件,并且返回文件对象
  • 如果文件存在,返回文件操作对象
  • 如果文件不存在,会抛出异常
  • read、write、close 需要文件对象来操作

函数

说明

open

打开文件,并且返回文件操作对象

read

将文件内容读取到内存

write

将内存中的数据写入文件

close

关闭文件

示例

  • 新建一个 aa.txt 文件,内容如下
  • 读取代码如下
# 打开文件
file=open("aa.txt")

# 读取文件
content=file.read()
print(content)

# 关闭文件,如果忘记关闭,会造系统资源消耗,影响后续访问
file.close()

注: 打开文件后,当操作完成后,一定要注意关闭,不然会造成资源消耗,影响后续对文件的访问

输出结果

python 开源包导入 怎么用python打开源文件_python

文件的打开方式

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

语法

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

访问方式

说明

r

以只读方式打开文件,文件的指针会放在文件的开头。这是默认模式

w

以只写方式打开文件,如果文件存在会被覆盖,不存在则会创建文件

a

以追加方式打开文件。如果文件存在,文件指针会在结尾,后续以追加内容的方式进行。如果文件不存在,则创建新文件进行写入

r+

以读写方式打开文件,文件指针在开头。如果文件不存在,抛异常

w+

以读写方式打开文件。如果文件存在会被覆盖。如果不存在,创建新文件

a+

以读写方式打开文件。如果文件存在则指针在文件结尾。如果不存在则创建新文件

示例

# 写入文件
file=open("bb.txt","w")
# 写入内容
file.write("aaaaaaaa")
# 关闭文件
file.close()

# 追加内容
file=open("bb.txt","a")
file.write("ccccccc")
file.close()

输出结果

python 开源包导入 怎么用python打开源文件_文本文件_02

按行读取内容

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

with + open() 模式 (推荐使用)

  • 这种模式下文件打开之后不需要写入文件关闭函数 close(),程序会在执行完 with 结构体中的程序后自动关闭打开的文件

示例:文件复制

test_list=[]
# 读取文件数据到内存
with open("aa.txt","r") as f:
    # 读取所有行
    for line in f.readlines():
        test_list.append(line)

# 从内存读取数据,写入到文件
with open("cc.txt","w") as f:
    for line in test_list:
        f.write(line)

文件/目录管理

在Python 中,如果希望对 文件或文件夹进行 创建、重命名、删除、查看 等操作,需要导入 os 模块

文件操作

方法名

说明 

示例

rename

重命名文件

os.rename(源文件,目标文件)

remove

删除文件

os.remove(文件名)

mknod

目录操作

方法名

说明

示例

listdir

目录列表

os.listdir(目录名)

mkdir

创建目录

os.mkdir(目录名)

rmdir

删除目录 

os.rmdir(目录名)

getcwd

获取当前目录

os.getcwd()

chdir

修改工作目录

os.chdir(目标目录)

path.isdir

判断是否是目录

os.path.isdir(目录路径)

注:对文件或者目录的操作, 都支持 相对路径 与 绝对路径

示例

import os
# 在当前目录下 创建一个 目录 aaa
os.mkdir("aaa")
# 在 aaa 目录下创建两个文件
with open("aaa/aaa.txt","w") as f:
    f.write("hhhhhhhhhhhh")
with open("aaa/bbb.txt","w") as f:
    f.write("ddddddddddddd")

# 获取当前目录
dirpwd = os.getcwd()
print(dirpwd)

文本文件的编码

  • 文本文件存储的内容是基于 字符编码 的文件,常见的编码有 ASCII 编码,UNICODE 编码等
  • Python 3.x 默认使用 UTF-8 编码
  • ASCII编码
  • 计算机中只有 256个 ASCII 字符,一个ASCII在内存中占用 1个字节的空间
  • UTF-8 编码
  • 计算机中使用 1~6 个字节来表示一个 UTF-8 字符,涵盖了地球上几乎所有地区的文字
  • 大多数汉字会用 3个字节表示
  • UTF-8 是 UNICODE 编码的一种编码格式

eval 函数

eval() 函数十分强大,将字符串 当成 有效的表达式 来求值 并返回计算结果

示例

# 解析字符串的 数字相加
print(eval("1+2"))

# 解析 列表
print(eval("[1,3,4,5,5]"))
print(type(eval("[1,3,4,5,5]")))

# 解析 字典
print(eval("{'aaa':1,'bbb':2}"))
print(type(eval("{'aaa':1,'bbb':2}")))

输出结果

python 开源包导入 怎么用python打开源文件_打开文件_03