Python_06_文件操作


目录:

文件的基本操作

操作文件的函数/方法

序号 函数/方法 说明
01 open函数 打开文件
02 read方法 将内容读取到内存中
03 write方法 将内容写入文件
04 close方法 关闭文件
  • open函数负责打开文件,并且返回文件对象;
  • read/write/close三个方法都需要通过文件对象来调用;

OPEN函数

打开文件的方式

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

访问方式 说明
r 只读方式打开文件。文件的指针指向文件的开头,这是默认方式如果文件不存在,抛出异常。
w 只写方式打开文件。如果文件存在则被覆盖。如果文件不存在创建新文件若不添加内容,程序执行完文件内容为空
a 追加方式打开文件。如果文件存在,文件指针指向文件的结尾。如果文件不存在,创建新文件进行写入
r+ 读写方式打开文件。文件的指针指向文件的开头。如果文件不存在,抛出异常。
w+ 读写方式打开文件。如果文件存在则被覆盖。如果文件不存在,创建新文件。
a+ 读写方式打开文件。如果文件已存在,文件指向指向文件的结尾。如果文件不存在,创建新文件进行写入。
# 打开文件
file = open("README", "w", encoding="utf-8")  # 以只写方式打开
# 修改文件
read = file.read()  # 虽然只做了读了操作,但以只写方式打开还是会用空文件来覆盖该文件
print(read)
write = file.write("kaiyi")
print(write)  # 输出'5',类似于len()函数,会对file.write()做int()统计字符数
# 关闭文件
file.close()

READ方法

open函数的第一个参数是要打开的文件名(文件名区分大小写);推荐先将open和close写完,再写write方法;

如果文件存在,返回文件操作对象;如果文件不存在,抛出异常

read方法会一次性读入并返回文件所有内容

close方法负责关闭文件,如果忘记关闭文件,会造成系统资源消耗,并且会影响后续对文件的访问;

方法执行后,会把文件指针移动到文件的末尾

文件指针

文件指针标记从哪个位置开始读取数据。

第一次打开文件时,文件指针通常会指向文件的开始位置。当执行read方法后,文件指针会移动到读取内容的末尾(默认移动到文件末尾);也就是说,当执行过一次read,读取了所有内容后,文件指针会移动到文件末尾(默认情况),再次调用read方法,就不会读取到任何内容。

READLINE方法

readline方法一次只读取一行内容。方法执行后,会将文件指针移动到下一行,准备再次读取。

source = open("README", "r", encoding="utf-8")  # open()方法
destination = open("README1", "w", encoding="utf-8")
number = 1
while True:  # 永远进行循环
    read = source.readline()  # 读取source文件第一行
    if not read:  # 如果没有数据,则退出
        break
    write = destination.write(read)  # write()方法
    print("第%s次复制" % number)  # 每次写入后控制台输出写入的次数
    number += 1
source.close()  # close()方法
destination.close()

EVAL函数

eval()函数可以将字符串当成有效的表达式来求值并返回计算结果

# 基本的数学计算
number = eval("1 * 5")
print(number)  # 输出'5'
# 字符串重复
str = eval("'*' * 10")
print(str)  # 输出'**********'
# 将字符串转换成列表
list = type(eval("[1, 2, 3, 4]"))
print(list)  # 输出'<class 'list'>'
dict = type(eval("{'name': 'xiaoming', 'age': 18}"))
print(dict)  # 输出'<class 'dict'>'

注意

eval("__import__('os').system('ls')")  # 不要滥用eval,容易造成注入攻击
# 千万不要用eval函数直接转换input的结果,你永远不知道用户会输入什么
import os
os.system("ls")  # 等同于这两条命令