在 计算机 中要操作文件的套路非常固定,一共包含三个步骤:
用法示例:
# 1. 打开 - 文件名需要注意大小写
file = open("main.py")
# 2. 读取
text = file.read()
print(text)
# 3. 关闭
file.close()
关于文件指针
文件指针 标记 从哪个位置开始读取数据
第一次打开 文件时,通常文件指针会指向文件的开始位置
当执行了read 方法后,文件指针 会移动到 读取内容的末尾
再次调用 read 方法就无法读取到内容了,因为文件指针已经移动到了文件末尾了。
open 函数默认以 只读方式 打开文件,并且返回文件对象, 此外open函数的第二个参数可以支持文件操作的权限模式
语法如下:
f = open("文件名", "访问方式")
# 打开文件
f = open("README", "w")
f.write("hello python!\n")
f.write("今天天气真好")
# 关闭文件
f.close()
read 方法默认会把文件的 所有内容 一次性读取到内存,如果文件太大,对内存的占用会非常严重, 可以使用readline 方法来逐行读取
# 打开文件
file = open("README")
while True:
# 读取一行内容
text = file.readline()
# 判断是否读到内容
if not text:
break
# 每读取一行的末尾已经有了一个 `\n`, 通过end将print输出的'\n'替换掉,保留readline的
print(text, end="")
# 关闭文件
file.close()
(1) 小文件的复制操作
# 1. 打开文件
file_read = open("README")
file_copy = open("README_bak", "w")
# 2. 读取并写入文件
text = file_read.read()
file_copy.write(text)
# 3. 关闭文件
file_read.close()
file_copy.close()
(2) 大文件的复制操作
打开一个已有文件,逐行读取内容,并顺序写入到另外一个文件
# 1. 打开文件
file_read = open("README")
file_copy = open("README_bak", "w")
# 2. 读取并写入文件
while True:
line = file_read.readline()
if not line:
break
file_copy.write(line)
# 3. 关闭文件
file_read.close()
file_copy.close()
语法如下:
with open(文件名, 模式) as 文件对象:
文件对象.方法()
代码示例:
with open('..\data.txt', 'r',encoding="utf-8") as f:
print(f.read())
注意: 这种方式读写数据只会执行一次, 并不会循环执行, 如果要执行多次, 还需要配合循环语句来实现,例如:
with open("main.py", 'rb') as f:
while True:
line = f.readline()
if line:
print(line)
else:
break
在 Python 中,如果希望通过程序实现文件 / 目录 管理操作功能,例如: 创建、重命名、删除、改变路径、查看目录内容,需要导入 os 模块
文本文件存储的内容是基于 字符编码 的文件,常见的编码有 ASCII 编码,UNICODE 编码等
(1) ASCII 编码
(2) UTF-8 编码格式
(3) Ptyhon 2.x 中如何使用中文
在 Python 2.x 文件的 第一行 增加以下代码,解释器会以 utf-8 编码来处理 python 文件
# *-* coding:utf8 *-*
或者
# coding=utf8
否则有中文的时候会执行报下面错误:
SyntaxError: Non-ASCII character '\xe9' in file
(4) unicode 字符串
# *-* coding:utf8 *-*# 在字符串前,增加一个 `u` 表示这个字符串是一个 utf8 字符串
hello_str = u"你好世界"
print(hello_str)
for c in hello_str:
print(c)