【Python】文件

01.文件的基本操作

1.1 操作文件

在计算机中操作文件的套路是分为三个步骤:
1)打开文件
2)读/写文件
3)关闭文件

1.2 操作文件的函数/方法

序号 函数/方法 说明
1 open 打开文件,并且返回文件操作对象
2 read 将文件读取到内存
3 write 将指定内容写入文件
4 close 关闭文件

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

1.3 读取文件

1.3.1 read方法(一次性读取)

read方法读取文件需要注意一下几点:
1)open函数的第一个参数是要打开的文件名(文件名区分大小写)
2)read方法一次性读取文件所有内容并返回
3)close只负责关闭文件,如果忘记关闭文件,则会造成资源浪费或者影响后续对文件的访问

# 打开文件,指定编码格式,避免无法读取中文
f = open("a.txt",encoding="utf-8")

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

# 关闭文件
f.close()

小提示:
开发过程中,通常会先编写 打开关闭 的代码,再编写中间针对文件的 读/写 操作!
第一次打开文件的时候,文件指针指向文件的开始位置,当执行了read方法后,指针会移动到文件末尾。

1.3.2 readline方法(按行读取)

read方法是一次性将文件读取到内存,然后返回一个文件对象,如果文件特别大的话,那么对内存的占用会非常严重,所以有了readline方法

  • readline方法一次性读取一行内容
  • 方法执行后,会把文件指针移动到下一行,准备再次读取
    大文件的正确读取方式:
# 打开文件
f = open("a.txt",encoding="utf-8")

# 读取大文件
while True:
    line  = f.readline()
    if not line:
        break
    # 每读取一行的末尾已经有了一个 \n
    print(line,end="")
    
# 关闭文件
f.close()

2.4 打开文件的方式

默认情况下:open函数是以只读方式打开文件。
语法格式:

f = open("文件名","访问方式",encoding="编码格式")
访问方式 说明
r 只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式。如果文件不存在,抛出异常
w 只写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件
a 追加方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入
r+ 读写方式打开文件。文件的指针将会放在文件的开头。如果文件不存在,抛出异常
w+ 读写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件
a+ 读写方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入

小提示
频繁的移动文件指针,会影响文件的读写效率,开发中更多的时候会以 只读只写 的方式来操作文件
实战演练--写入文件实例

# 写模式,打开文件
f = open("b.txt","w",encoding="utf-8")

# 写入内容
f.write("今天天气真好!\n")
f.write("我们出去钓鱼吧!")


# 关闭文件
f.close()

02.文件的复制

2.1 小文件的复制

小文件的复制思路是:打开一个文件,全部读取后写入到另外一个文件

# 打开读与写的文件
file_read = open("b.txt",encoding="utf-8")
file_write = open("c.txt","w",encoding="utf-8")

# 读取文件
text = file_read.read()
file_write.write(text)

# 关闭文件
file_read.close()
file_write.close()

2.2 大文件的复制

大文件的复制思路是:打开一个文件,逐行边读边写。

# 打开读与写的文件
file_read = open("b.txt",encoding="utf-8")
file_write = open("c.txt","w",encoding="utf-8")

# 读取文件
while True:
    line = file_read.readline()
    if not line:
        break
    file_write.write(line)

# 关闭文件
file_read.close()
file_write.close()
posted @ 2020-01-22 00:18  OLIVER_QIN  阅读(397)  评论(0编辑  收藏  举报