默默的学python(六)——文件读写

一、创建目录

python可以使用mkdir()和makedirs()两种方法来创建目录,mkdir()创建一层目录,makedirs()创建多层目录。

1.创建一层目录mkdir()

实例:

import os
# 创建目录‘D:\\Python创建的文件夹’
os.mkdir(r'D:\\Python创建的文件夹')

2.创建多层目录makedirs()

import os
# 创建多多层目录‘D:\\Test\\AA’
os.makedirs(r'D:\\Test\\AA')

3.实例

import os


def mkdir(path):
    # 判断目录是否存在
    # 获取目录
    folder = os.path.exists(path)
    if not folder:
        os.mkdir(path)
        # os.makedirs(path)
        print('----创建成功----')
    else:
        print(path + '目录已存在')


path = r'D:\\Test'
# path = r'D:\\Test\\AA'
mkdir(path)

结果:

D:\自学python\python基础\python基础\venv\Scripts\python.exe D:/自学python/python基础/python基础/文件读写/创建目录.py
----创建成功----

在这里插入图片描述

4.删除目录

一般删除文件时使用os库,然后利用os.remove(path)即可完成删除,如果删除空文件夹则可使用os.removedirs(path)即可,
但是如果需要删除整个文件夹,且文件夹非空时使用os.removedirs(path)就会报错了,此时可以使用shutil库,该库为python内置库,是一个对文件及文件夹高级操作的库,可以与os库互补完成一些操作,如文件夹的整体复制,移动文件夹,对文件重命名等。

import os
import shutil
     
os.remove(path)   #删除文件
os.removedirs(path)   #删除空文件夹
     
os.rmdir(path)    #删除空文件夹
     
shutil.rmtree(path)    #递归删除文件夹,即:删除非空文件夹

二、文件操作file

1.open() 方法

Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。

注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。

open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。

open(file, mode='r')

完整的语法格式为:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数说明:

file: 必需,文件路径(相对或者绝对路径)。mode: 可选,文件打开模式
buffering: 设置缓冲
encoding: 一般使用utf8
errors: 报错级别
newline: 区分换行符
closefd: 传入的file参数类型
opener: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符。

mode 参数有:

模式描述
t文本模式 (默认)。
x写模式,新建一个文件,如果该文件已存在则会报错。
b二进制模式。
+打开一个文件进行更新(可读可写)。
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

2.文件操作

file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:

方法描述
file.close()关闭文件。关闭后文件不能再进行读写操作。
file.flush()刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
file.fileno()返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。
file.isatty()如果文件连接到一个终端设备返回 True,否则返回 False。
file.read([size])从文件读取指定的字节数,如果未给定或为负则读取所有。
file.readline([size])读取整行,包括 “\n” 字符。
file.readlines([sizeint])读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。
file.seek(offset[, whence])移动文件读取指针到指定位置
file.tell()返回文件当前位置。
file.truncate([size])从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 windows 系统下的换行代表2个字符大小
file.write(str)将字符串写入文件,返回的是写入的字符长度。
file.writelines(sequence)向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

实例代码

1.在指定的目录创建txt文件
import os

def mkdir_file(filename):
    # 创建文件
    os.chdir(r'D:\\Test')   # 进入指定目录
    if not os.path.isfile(filename):
        fd = open(filename, mode='w', encoding='utf-8')   # 创建文件
        fd.close()


file_name = 'test.txt'
mkdir_file(file_name)

运行结果:
在这里插入图片描述

2.在.txt文件中写入数据
import os


# 使用open()函数和write()函数
# 但是有两种写法,分别是'a'和'w'
def write_txt(file_path, txt):
    # a:表示写入文件,若无该文件会直接创建一个如果存在这个文件,会接着已有的内容的后面写入
    with open(file_path, 'a', encoding='utf-8') as f:
    # w:表示写入文件,若无该文件会直接创建一个,如果存在这个文件,里面的内容会被后面写入的内容替换掉
    # with open(file_path, 'a', encoding='utf-8') as f:
        f.write(txt)
        print('写入文件成功')


file_path = r'D:\\Test\\test.txt'
txt = '好好学习,天天向上'
write_txt(file_path, txt)

运行结果:在这里插入图片描述

3.python操作word文件

安装 python-docx 库
在终端中执行

pip install python-docx
from docx import Document
from docx.shared import Cm


def write_word():
    file = Document()
  	# 添加标题
    file.add_heading('文章标题', level=1)
      # 添加段落
    dl1 = file.add_paragraph('这是一个段落')
    dl2 = file.add_paragraph('这又是一个段落')
    dl3 = file.add_paragraph()

    dl3.add_run('加粗').bold = True
    dl3.add_run('普通')
    dl3.add_run('斜体').italic = True
    # 添加图片
    file.add_picture(r'F:\图片\abc.jpg', width=Cm(5), height=Cm(3))

    table_list = [
        ['学号', '姓名', '成绩'],
        [10120, '吕布', 80],
        [10121, '貂蝉', 95],
        [10122, '李白', 100]
    ]
    # 添加表格
    table = file.add_table(rows=4, cols=3)
    for row in range(4):
        cells = table.rows[row].cells
        for col in range(3):
            cells[col].text = str(table_list[row][col])

    file.save(r'D:\\Test\\ces.docx')


write_word()

在这里插入图片描述

4.python操作excel文件

常见库简介
xlrd

xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件。
http://xlrd.readthedocs.io/en/latest/
1、xlrd支持.xls,.xlsx文件的读
2、通过设置on_demand变量使open_workbook()函数只加载那些需要的sheet,从而节省时间和内存(该方法对.xlsx文件无效)。
3、xlrd.Book对象有一个unload_sheet方法,它将从内存中卸载工作表,由工作表索引或工作表名称指定(该方法对.xlsx文件无效)

xlwt
xlwt是一个用于将数据和格式化信息写入旧Excel文件的库(如.xls)。
https://xlwt.readthedocs.io/en/latest/
1、xlwt支持.xls文件写。
xlutils

xlutils是一个处理Excel文件的库,依赖于xlrd和xlwt。
http://xlutils.readthedocs.io/en/latest/
1、xlutils支持.xls文件。
2、支持Excel操作。
xlwings

xlwings是一个可以实现从Excel调用Python,也可在python中调用Excel的库。
http://docs.xlwings.org/en/stable/index.html
1、xlwings支持.xls读,支持.xlsx文件读写。
2、支持Excel操作。
3、支持VBA。
4、强大的转换器可以处理大部分数据类型,包括在两个方向上的numpy array和pandas DataFrame。

openpyxl
openpyxl是一个用于读取和编写Excel 2010 xlsx/xlsm/xltx/xltm文件的库。
https://openpyxl.readthedocs.io/en/stable/
1、openpyxl支持.xlsx文件的读写。
2、支持Excel操作。
3、加载大.xlsx文件可以使用read_only模式。
4、写入大.xlsx文件可以使用write_only模式。

xlsxwriter
xlsxwriter是一个用于创建Excel .xlsx文件的库。
https://xlsxwriter.readthedocs.io/
1、xlswriter支持.xlsx文件的写。
2、支持VBA。
3、写入大.xlsx文件时使用内存优化模式。
在这里插入图片描述

xlrd
import xlrd  
  
def test_xlrd_on_demand_false():  
    # f = xlrd.open_workbook('test_cases\\read_xls.xls', on_demand=False)  
    f = xlrd.open_workbook('test_cases\\read_xlsx.xlsx', on_demand=False)  
  
def test_xlrd_on_demand_true():  
    # f = xlrd.open_workbook('test_cases\\read_xls.xls', on_demand=True)  
    f = xlrd.open_workbook('test_cases\\read_xlsx.xlsx', on_demand=True)  
    f.sheet_by_index(0)
xlwt
    import xlwt  
      
    book = xlwt.Workbook()  
    def test_xlwt():  
        for s in range(5):  
            sheet = book.add_sheet(str(s))  
            for i in range(2000):  
                for j in range(256):  
                    sheet.write(i, j, 65536)  
        book.save('test_cases\\write_xls.xls')  
openpyxl
import openpyxl  
  
def test_openpyxl_read():  
    f = openpyxl.load_workbook('test_cases\\read_xlsx.xlsx', read_only=True)  
  
  
c = [65536] * 1200  
f = openpyxl.Workbook(write_only=True)  
  
def test_openpyxl_write():  
    for i in range(1):  
        sheet = f.create_sheet(title=str(i))  
        for row in range(2000):  
            sheet.append(c)  
    f.save('test_cases\\write_xlsx.xlsx')  
xlsxwriter
    import xlsxwriter  
      
    workbook = xlsxwriter.Workbook('test_cases\\write_xlsx.xlsx')  
    def test_xlsxwriter():  
        for s in range(1):  
            worksheet = workbook.add_worksheet()  
            for i in range(2000):  
                for j in range(1200):  
                    worksheet.write(i, j, 65536)  
        workbook.close() 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值