python操作文本文件和Word文件

python中的操作文本文件和Word文件

先介绍使用Python对文本文件的操作,再介绍使用Python对word文件的操作。

在 Python 中要操作文本文件需要记住几个函数和方法:

open函数,打开文件,并且返回文件操作对象

read和readline 、readlines方法,将文件内容读取到内存

write方法,将指定内容写入文件

close方法,关闭文件

 

open函数

在Python语言中,负责文件操作的称为文件对象,文件对象不仅可以访问存储在磁盘中的文件,也可以访问网络文件。

通过文件句柄进行文件操作,会用到open函数。

Python中用于访问文件的open函数,应用Python提供的open函数可以返回文件对象。open函数提供了输入/输出操作的通用接口,open函数成功打开文件后会返回一个文件对象,打开失败时会抛出异常IOError。open函数的基本语法如下:

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

open函数有八个参数,分别是fileName、mode、buffering、encoding、errors、newline、closefd、opener,比较重要的是前四个参数,除了fileName参数外,其它都有默认值,因此使用open函数时,不需要传入全部参数。

下面重点对前四个参数予以详细说明:

☆fileName指定了要打开的文件名称,fileName的数据类型为字符串,fileName也包含了文件所在的存储路径,存储路径可以是相对路径,此时文件在工程目录下面f=open('test.txt','r'),也可以是绝对路径,此时可任意指定目录,比如f=open('d:/ pythonDemo/test.txt','r')

☆mode指定了文件的打开模式,也就是设定文件的打开权限。文件的打开模式有:

☆buffering用于指定打开文件所用的缓冲方式,缓冲是指用于读取文件的缓冲区,缓冲区就是一段内存区域。设置缓冲区的目的是先把文件内容读取到缓冲区,可以减少CPU读取磁盘的次数。Buffering为0时表示不缓冲,为1时表示只缓冲一行数据,为-1时表示使用系统默认缓冲机制,默认为-1。任何大于1的值表示使用给定的的值作为缓冲区大小。一般情况下使用函数默认值即可。

☆encoding用于指定文件的编码方式,默认采用utf-8,编码方式主要是指文件中的字符编码。我们经常会碰到这样的情况,当打开一个文件时,内容全部是乱码,这是因为创建文件时采用的编码方式,和打开文件时的编码方式不一样,就会造成字符显示错误,看上去就是乱码。

 

文件操作的流程

1. 打开文件,得到文件对象(有资料说是句柄)一个变量

2. 通过句柄对文件进行操作

3. 关闭文件

 

例1、用记事本先建立一个test.txt文件,通过文件句柄读取这个文件。

test.txt文件的内容如下:

这是python测试文件

good!

 

新建一个pyTest01.py代码文件内容如下:

filename = 'test.txt'

f = open(filename,'r',encoding='utf-8') #打开文件

context = f.read()  #文件进行操作

print(context)

f.close()          #关闭文件

 

 

运行结果:

 

 

不要小看关闭文件这一步,因为我们读取文件是把文科读取到内存中的,如果我们没关闭它,它就会一直占用系统资源,而且还可能导致其他不安全隐患。还有一种方法可以让我们不用去特意关注关闭文件。那就是 with open()。示例如下。

例2、使用with open()的代码文件pyTest02.py内容如下:

filename = 'test.txt'

with  open(filename,'r',encoding='utf-8') as f: #打开文件

  context = f.read()  #文件进行操作

  print(context)

运行结果和上例一样。

 

write方法

写数据:使用write(“content”),可以完成向文件写入数据,注意:如果文件不存在那么创建,如果存在那么就先清空文件(覆盖),然后写入数据到文件里.。

例3、给test.txt文件追加两行文本

filename = 'test.txt'

f = open(filename,'a',encoding='utf-8') #打开文件,追加

f.write('hello,你好\n')  #换行符\n

f.write('呵呵,哈哈\n') 

f.close() #关闭文件

 

read和readline 、readlines方法

读数据:使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(字符个数),如果没有传入num或者为负,那么就表示读取文件中所有的数据,read()将读取的数据以字符串的形式返回。注意:

如果使用read读了多次,那么后面继续使用read读取的数据是从上次读完后的位置开始的

注意:read ()方法默认会把文件的所有内容 一次性读取到内存,当然可以指定读取的字符数。如果文件太大,对内存的占用会非常严重。

readlines()可以按照行的方式把整个文件中的内容进行一次性读取,读取所有行(直到结束符 EOF)并返回列表,并且返回的是一个列表,其中每一行(按着换行符进行判断一行)的数据为一个元素。

readline(),对原文件的数据按行读取,(行的划分是\n).每次只读取一行。如果有多次读取的话,下面一次读取的偏移量是上面读取后的偏移量。

 

例4、读取test.txt文件中的文本4个字符

filename = 'test.txt'

f = open(filename,'r',encoding='utf-8') #打开文件

content=f.read(4)  #读取4个字符

print("读取的内容:%s"%content) 

f.close()

 

上面介绍的是使用Python对文本文件的操作,下面介绍使用Python对word文件的操作。

 

使用Python对word文件进行操作

可以使用开发包有python-docx、pypiwin32等。

先介绍使用python-docx开发包操作word文档

想要Python获得操作docx文档的能力,得先安装docx开发包。打开命令行窗口cmd,输入:pip install python-docx。稍等片刻就安装好了。

【查看python第三方模块(库、包)是否安装及其版本号

在cmd中输入python -m pip list 或 pip list】

 

现在看看如何对word文档进行操作的代码:

#在对word文档编辑之前需要导入Document模块

from docx import Document

from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

from docx.shared import Inches

from docx.shared import Pt

from docx.shared import RGBColor

from docx.oxml.ns import qn

# 声明一个word对象

doc = Document()

# 设置字体样式

doc.styles['Normal'].font.name = u'宋体'

doc.styles['Normal'].element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')

# ------添加文档标题-------

paragraph = doc.add_paragraph()

run = paragraph.add_run("使用Python对word文档进行操作")

font = run.font

# 设置字体大小

font.size = Pt(24)

# 设置水平居中

paragraph_format = paragraph.paragraph_format

paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

# ------添加一段话-------

content = "这是一个python-docx基础操作实例演示"

paragraph = doc.add_paragraph(content)

paragraph_format = paragraph.paragraph_format

# 第一行左边缩进

paragraph_format.first_line_indent = Inches(0.3)

# -----添加一个小标题------

paragraph = doc.add_paragraph()

run = paragraph.add_run("呵呵,哈哈")

paragraph_format = paragraph.paragraph_format

# 段前

paragraph_format.space_after = Pt(15)

# 段后

paragraph_format.space_before = Pt(2)

# 字体加粗和下划线

font = run.font

font.bold = True

# ----加入文本-----

content = "hello, world!\n你好,世界,本文演示练习使用Python对word文档进行操作。\n"

paragraph = doc.add_paragraph(content)

# 添加下划线

run = paragraph.add_run("什么是下划线?将在此句演示!")

font = run.font

font.underline = True

# 插入表格和内容

table = doc.add_table(rows=3, cols=2, style="Medium Grid 1 Accent 1")

table.cell(0, 0).text = "Python"

table.cell(0, 1).text = "跨平台编程语言"

table.cell(1, 0).text = "跨平台"

table.cell(1, 1).text = "Windows、macOS、Ubuntu等"

table.cell(2, 0).text = "用途"

table.cell(2, 1).text = "人工智能、Web、桌面系统..."

# -----设置字体颜色------

doc.add_paragraph()

doc.add_paragraph("下面分页")

# 插入一个分页符

doc.add_page_break()

paragraph = doc.add_paragraph()

run = paragraph.add_run("下面插入图片,本例中需要在本源码文件所在的目录中有名为good.png的图片,否则出错。")

font = run.font

font.color.rgb = RGBColor(0xFF, 0x00, 0x00)

# -----添加图片,设置图片大小------

doc.add_picture(r"good.png", width=Inches(6.25))

# ------保存word文档到当前目录下-------

doc.save('demo.docx')

 

运行上面的代码将本源码文件所在的目录中生成名为demo.docx的文件。

 

关于python-docx可以参考

https://www.cnblogs.com/sheng-yang/p/10599529.html

https://www.cnblogs.com/anpengapple/tag/python-docx/

https://www.cnblogs.com/z123zero/p/10770097.html

https://www.csdn.net/gather_21/Mtjagg2sMTA0LWJsb2cO0O0O.html

 

 

使用pypiwin32开发包操作word文档

安装pypiwin32,打开命令行窗口cmd,输入:

pip install pypiwin32

 

现在看看对word文档进行操作的代码:

from win32com.client import Dispatch

app = Dispatch('Word.Application')

# 新建word文档

doc = app.Documents.Add()

# 如何显示Word

app.Visible = 1

 

 

关于pypiwin32可以参考

https://blog.csdn.net/chinajobs/article/details/52860122

https://blog.csdn.net/weixin_43519457/article/details/89113293

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习&实践爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值