Python3笔记048

第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:1Pythonpythonbasicwork1.txt", "a+")

打开文件时指定编码方式

# 指定编码方式:encoding='utf-8'
file = open(r"D:1Pythonpythonbasicwork1.txt", "a+", encoding='utf-8')

以二进制形式打开非文本文件

f = open("D:\01Python\pythonbasic\测试工匠麻辣烫博客.png", 'rb')
print(f.name)

2、关闭文件

# file.close() # 关闭文件对象
f = open(r"D:1Pythonpythonbasicwork1.txt", "a+", encoding="utf-8")
f.close()

3、写入文件内容

file.write(string)
参数说明
file:打开的文件对象
string:要写入的字符串
f = open(r"D:1Pythonpythonbasicwork1.txt", "a+", encoding="utf-8")
for i in range(100):
    f.write("python
") # 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:1Pythonpythonbasicwork1.txt", "a+", encoding="utf-8") as f:
    for i in range(100):
        f.write("python
")

5、读取文件内容

  • 读取指定字符
# read()
import os

filename = r"D:1Pythonpythonbasicwork1.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:1Pythonpythonbasicwork1.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:1Pythonpythonbasicwork1.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:1Pythonpythonbasicwork1.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:1Pythonpythonbasicwork1.txt"
newfilename = r"D:1Pythonpythonbasicwork2.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')

注意,如果拷贝前,目标目录下已经存在,则会被覆盖,所以使用该函数一定要小心。

原文地址:https://www.cnblogs.com/infuture/p/13383443.html