Python3笔记048 - 10.1 文件操作
第10章 文件及目录操作
10.1 文件操作
文件操作:创建、打开、关闭、写入、读取、删除、拷贝、重命名、
1、创建和打开文件
# open函数创建或打开一个文件,返回值是一个文件对象
f = open("filename", mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
参数说明
f:函数open返回的文件对象
filename:要创建或打开的文件名,采用路径加文件名的形式
mode:可选参数,指定文件的打开模式,默认只读
buffering:可选参数,指定读写文件的缓冲模式
encoding:可选参数,编码方式
mode参数说明
'r' open for reading (default)
'w' open for writing, truncating the file first
'x' create a new file and open it for writing
'a' open for writing, appending to the end of the file if it exists
'b' binary mode
't' text mode (default)
'+' open a disk file for updating (reading and writing)
'U' universal newline mode (deprecated)
打开一个不存在的文件时先创建该文件
# 在调用open()函数时,指定mode的参数值为w、w+、a、a+,这样当要打开的文件不存在时,就可以创建新的文件了。
f = open(r"D:\01Python\pythonbasic\work1.txt", "a+")
打开文件时指定编码方式
# 指定编码方式:encoding='utf-8'
file = open(r"D:\01Python\pythonbasic\work1.txt", "a+", encoding='utf-8')
以二进制形式打开非文本文件
f = open("D:\\01Python\\pythonbasic\\测试工匠麻辣烫博客.png", 'rb')
print(f.name)
2、关闭文件
# file.close() # 关闭文件对象
f = open(r"D:\01Python\pythonbasic\work1.txt", "a+", encoding="utf-8")
f.close()
3、写入文件内容
file.write(string)
参数说明
file:打开的文件对象
string:要写入的字符串
f = open(r"D:\01Python\pythonbasic\work1.txt", "a+", encoding="utf-8")
for i in range(100):
f.write("python\n") # file.write(string)
f.close()
4、打开文件时使用with语句
文件打开后要及时关闭,如果忘记关闭可能会有意想不到的问题;如果打开时抛异常,那么可能导致文件不能及时关闭。使用with来处理这样的问题。
with expression as target:
with-body
参数说明
expression:指定表达式,可以是打开文件的open()函数
target:指定一个变量,并且将expression的结果保存到该变量中
with-body:指定with语句体
# 不必写f.close(),with语句自动关闭打开的文件
with open(r"D:\01Python\pythonbasic\work1.txt", "a+", encoding="utf-8") as f:
for i in range(100):
f.write("python\n")
5、读取文件内容
- 读取指定字符
# read()
import os
filename = r"D:\01Python\pythonbasic\work1.txt"
if os.path.exists(filename) == True:
f = open(filename, "r", encoding="utf-8")
for i in f.read(5): # read(5),数字代表读取字符的个数
print(i, end='')
else:
print("文件不存在,未执行重命名操作!")
- 读取一行
# readline()
import os
filename = r"D:\01Python\pythonbasic\work1.txt"
if os.path.exists(filename) == True:
f = open(filename, "r", encoding="utf-8")
for i in f.readline(): # readline()
print(i)
else:
print("文件不存在,未执行重命名操作!")
- 读取全部行
readlines()
import os
filename = r"D:\01Python\pythonbasic\work1.txt"
if os.path.exists(filename) == True:
f = open(filename, "r", encoding="utf-8")
for i in f.readlines(): # readlines()
print(i, end='')
else:
print("文件不存在,未执行重命名操作!")
6、删除文件
os.remove(path)
os.remove('sdf.py')
# 删除最后一级目录下的文件用remove方法
import os
filename = r"D:\01Python\pythonbasic\work1.txt"
if os.path.exists(filename) == True:
os.remove(filename)
if os.path.exists(filename) == False:
print("文件存在,已被删除!")
else:
print("文件不存在,未执行删除操作!")
7、重命名文件
os.rename(src,dst)
# 重命名文件用rename命令
import os
filename = r"D:\01Python\pythonbasic\work1.txt"
newfilename = r"D:\01Python\pythonbasic\work2.txt"
if os.path.exists(filename) == True:
os.rename(filename, newfilename)
if os.path.exists(newfilename) == True:
print("文件存在,重命名成功!")
else:
print("文件不存在,未执行重命名操作!")
8、拷贝文件
shutil 模块里面有很多目录文件操作的函数
# 拷贝文件用shutil模块的copyfile函数
from shutil import copyfile
# 拷贝 d:/tools/first.py 到 e:/first.py
copyfile('d:/tools/first.py', 'e:/first.py')
注意,如果拷贝前,目标目录下已经存在,则会被覆盖,所以使用该函数一定要小心。
敬请关注个人微信公众号:测试工匠麻辣烫