asp.net 设置 excel alignment_教你如何用Python轻轻松松操作Excel、Word、CSV,一文就够了,赶紧码住!!!...

作者:奈何缘浅wyj

https://juejin.im/post/6868073137263607821

988ddaa50ca14b48d7b35e6836202a28.png

Python 操作 Excel

常用工具

数据处理是 Python 的一大应用场景,而 Excel 又是当前最流行的数据处理软件。因此用 Python 进行数据处理时,很容易会和 Excel 打起交道。得益于前人的辛勤劳作,Python 处理 Excel 已有很多现成的轮子,比如 xlrd & xlwt & xlutilsXlsxWriterOpenPyXL ,而在 Windows 平台上可以直接调用 Microsoft Excel 的开放接口,这些都是比较常用的工具,还有其他一些优秀的工具这里就不一一介绍,接下来我们通过一个表格展示各工具之间的特点:

类型xlrd&xlwt&xlutilsXlsxWriterOpenPyXLExcel开放接口
读取支持不支持支持支持
写入支持支持支持支持
修改支持不支持支持支持
xls支持不支持不支持支持
xlsx高版本支持支持支持
大文件不支持支持支持不支持
效率超慢
功能较弱强大一般超强大

以上可以根据需求不同,选择合适的工具,现在为大家主要介绍下最常用的 xlrd & xlwt & xlutils 系列工具的使用。

xlrd & xlwt & xlutils 介绍

xlrd&xlwt&xlutils 是由以下三个库组成:

  • xlrd:用于读取 Excel 文件;
  • xlwt:用于写入 Excel 文件;
  • xlutils:用于操作 Excel 文件的实用工具,比如复制、分割、筛选等;

安装库

安装比较简单,直接用 pip 工具安装三个库即可,安装命令如下:

$ pip install xlrd xlwt xlutils
be15c1936ad8c81b6ddf3156985f7b3a.png

ca0804cfa3a5db5bff23c72998fc1633.png

fb7f0e69846ab96f5f21029f62402816.png

写入 Excel

接下来我们就从写入 Excel 开始,话不多说直接看代码如下:

# 导入 xlwt 库
import xlwt# 创建 xls 文件对象
wb = xlwt.Workbook()# 新增两个表单页
sh1 = wb.add_sheet('成绩')
sh2 = wb.add_sheet('汇总')# 然后按照位置来添加数据,第一个参数是行,第二个参数是列# 写入第一个sheet
sh1.write(0, 0, '姓名')
sh1.write(0, 1, '专业')
sh1.write(0, 2, '科目')
sh1.write(0, 3, '成绩')
sh1.write(1, 0, '张三')
sh1.write(1, 1, '信息与通信工程')
sh1.write(1, 2, '数值分析')
sh1.write(1, 3, 88)
sh1.write(2, 0, '李四')
sh1.write(2, 1, '物联网工程')
sh1.write(2, 2, '数字信号处理分析')
sh1.write(2, 3, 95)
sh1.write(3, 0, '王华')
sh1.write(3, 1, '电子与通信工程')
sh1.write(3, 2, '模糊数学')
sh1.write(3, 3, 90)# 写入第二个sheet
sh2.write(0, 0, '总分')
sh2.write(1, 0, 273)# 最后保存文件即可
wb.save('test.xls')

运行代码,结果会看到生成名为 test.xls 的 Excel 文件,打开文件查看如下图所示:

2d0e7c831452b8bfa15e5ccc8171a95d.png

2f0f17ce159c6fd296b03a0f1d28ddd7.png

以上就是写入 Excel 的代码,是不是很简单,下面我们再来看下读取 Excel 该如何操作。

读取 Excel

读取 Excel 其实也不难,请看如下代码:

# 导入 xlrd 库
import xlrd# 打开刚才我们写入的 test_w.xls 文件
wb = xlrd.open_workbook("test_w.xls")# 获取并打印 sheet 数量print( "sheet 数量:", wb.nsheets)# 获取并打印 sheet 名称print( "sheet 名称:", wb.sheet_names())# 根据 sheet 索引获取内容
sh1 = wb.sheet_by_index(0)# 或者# 也可根据 sheet 名称获取内容# sh = wb.sheet_by_name('成绩')# 获取并打印该 sheet 行数和列数print( u"sheet %s 共 %d 行 %d 列" % (sh1.name, sh1.nrows, sh1.ncols))# 获取并打印某个单元格的值print( "第一行第二列的值为:", sh1.cell_value(0, 1))# 获取整行或整列的值
rows = sh1.row_values(0) # 获取第一行内容
cols = sh1.col_values(1) # 获取第二列内容# 打印获取的行列值print( "第一行的值为:", rows)print( "第二列的值为:", cols)# 获取单元格内容的数据类型print( "第二行第一列的值类型为:", sh1.cell(1, 0).ctype)# 遍历所有表单内容for sh in wb.sheets():for r in range(sh.nrows):# 输出指定行print( sh.row(r))

输出如下结果:

281481f8dbf601dfea642e930f70bb70.png

细心的朋友可能注意到,这里我们可以获取到单元格的类型,上面我们读取类型时获取的是数字1,那1表示什么类型,又都有什么类型呢?别急下面我们通过一个表格展示下:

数值类型说明
0empty
1string字符串
2number数字
3date日期
4boolean布尔值
5error错误

通过上面表格,我们可以知道刚获取单元格类型返回的数字1对应的就是字符串类型。

修改 excel

上面说了写入和读取 Excel 内容,接下来我们就说下更新修改 Excel 该如何操作,修改时就需要用到 xlutils 中的方法了。直接上代码,来看下最简单的修改操作:

# 导入相应模块
import xlrd
from xlutils.copy import copy# 打开 excel 文件
readbook = xlrd.open_workbook("test_w.xls")# 复制一份
wb = copy(readbook)# 选取第一个表单
sh1 = wb.get_sheet(0)# 在第五行新增写入数据
sh1.write(4, 0, '王欢')
sh1.write(4, 1, '通信工程')
sh1.write(4, 2, '机器学习')
sh1.write(4, 3, 89)# 选取第二个表单
sh1 = wb.get_sheet(1)# 替换总成绩数据
sh1.write(1, 0, 362)# 保存
wb.save('test.xls')

从上面代码可以看出,这里的修改 Excel 是通过 xlutils 库的 copy 方法将原来的 Excel 整个复制一份,然后再做修改操作,最后再保存。看下修改结果如下:

4d7c287cada687fef5f9604ca45db4b7.png

c37e0f0f638ee49bfa3c640812d2ff3a.png

格式转换操作

在平时我们使用 Excel 时会对数据进行一下格式化,或者样式设置,在这里把上面介绍写入的代码简单修改下,使输出的格式稍微改变一下,代码如下:

# 导入 xlwt 库
import xlwt# 设置写出格式字体红色加粗
styleBR = xlwt.easyxf('font: name Times New Roman, color-index red, bold on')# 设置数字型格式为小数点后保留两位
styleNum = xlwt.easyxf(num_format_str='#,##0.00')# 设置日期型格式显示为YYYY-MM-DD
styleDate = xlwt.easyxf(num_format_str='YYYY-MM-DD')# 创建 xls 文件对象
wb = xlwt.Workbook()# 新增两个表单页
sh1 = wb.add_sheet('成绩')
sh2 = wb.add_sheet('汇总')# 然后按照位置来添加数据,第一个参数是行,第二个参数是列
sh1.write(0, 0, '姓名', styleBR)   # 设置表头字体为红色加粗
sh1.write(0, 1, '日期', styleBR)   # 设置表头字体为红色加粗
sh1.write(0, 2, '成绩', styleBR)   # 设置表头字体为红色加粗# 插入数据
sh1.write(1, 0, '张三',)
sh1.write(1, 1, '2020-07-01', styleDate)
sh1.write(1, 2, 90, styleNum)
sh1.write(2, 0, '李四')
sh1.write(2, 1, '2020-08-02')
sh1.write(2, 2, 95, styleNum)# 设置单元格内容居中的格式
alignment = xlwt.Alignment()
alignment.horz = xlwt.Alignment.HORZ_CENTER
style = xlwt.XFStyle()
style.alignment = alignment# 合并A4,B4单元格,并将内容设置为居中
sh1.write_merge(3, 3, 0, 1, '总分', style)# 通过公式,计算C2+C3单元格的和
sh1.write(3, 2, xlwt.Formula("C2+C3"))# 对 sheet2 写入数据
sh2.write(0, 0, '总分', styleBR)
sh2.write(1, 0, 185)# 最后保存文件即可
wb.save('test.xls')

输出结果:

7d8db26db3ec468f641d7bed503d8f6d.png

可以看出,使用代码我们可以对字体,颜色、对齐、合并等平时 Excel 的操作进行设置,也可以格式化日期和数字类型的数据。当然了这里只是介绍了部分功能,不过这已经足够我们日常使用了,想了解更多功能操作可以参考官网。

python-excel官网:www.python-excel.org/

Python 操作 Word

安装 python-docx

处理 Word 需要用到 python-docx 库,目前版本为 0.8.10 ,执行如下安装命令:

$ pip install python-docx################# 运行结果 ################
C:\Users\Y>pip install python-docx
Looking in indexes: https://pypi.doubanio.com/simple
Collecting python-docx
  Downloading https://pypi.doubanio.com/packages/e4/83/c66a1934ed5ed8ab1dbb9931f1779079f8bca0f6bbc5793c06c4b5e7d671/python-docx-0.8.10.tar.gz (5.5MB)
     |████████████████████████████████| 5.5MB 3.2MB/s
Requirement already satisfied: lxml>=2.3.2 in c:\users\y\appdata\local\programs\python\python37\lib\site-packages (from python-docx) (4.5.0)
Building wheels for collected packages: python-docx
  Building wheel for python-docx (setup.py) ... done
  Created wheel for python-docx: filename=python_docx-0.8.10-cp37-none-any.whl size=184496 sha256=7ac76d3eec848a255b4f197d07e7b78ab33598c814d536d9b3c90b5a3e2a57fb
  Stored in directory: C:\Users\Y\AppData\Local\pip\Cache\wheels\05\7d\71\bb534b75918095724d0342119154c3d0fc035cedfe2f6c9a6c
Successfully built python-docx
Installing collected packages: python-docx
Successfully installed python-docx-0.8.10
复制代码

OK,如果提示以上信息则安装成功。

写入 Word

平时我们在操作 Word 写文档的时候,一般分为几部分:标题章节段落图片表格引用以及项目符号编号等。下面我们就按这几部分如何用 Python 操作来一一介绍。

标题

文档标题创建比较简单,通过 Document() 创建出一个空白文档,只要调用 add_heading 方法就能创建标题。

# 导入库
from docx import Document
from docx.shared import Pt
from docx.shared import Inches
from docx.oxml.ns import qn# 新建空白文档
doc1 = Document()# 新增文档标题
doc1.add_heading('如何使用 Python 创建和操作 Word',0)# 保存文件
doc1.save('word1.docx')

这样就完成了创建文档和文章标题的操作,下面运行程序,会生成名为 word1.docx 的文档,打开文章显示如下图所示:

bbeb0eeaea163cac9b19cc31079674d6.png

章节与段落

有了文章标题,下面我们来看章节和段落是怎么操作的,在上面代码后面增加章节和段落操作的代码如下:

# 导入库
from docx import Document
from docx.shared import Pt
from docx.shared import Inches
from docx.oxml.ns import qn# 新建空白文档
doc1 = Document()# 新增文档标题
doc1.add_heading('如何使用 Python 创建和操作 Word',0)# 创建段落描述
doc1.add_paragraph(' Word 文档在我们现在的生活和工作中都用的比较多,我们平时都使用 wps 或者 office 来对 Word 进行处理,可能没想过它可以用 Python 生成,下面我们就介绍具体如何操作……')# 创建一级标题
doc1.add_heading('安装 python-docx 库',1)# 创建段落描述
doc1.add_paragraph('现在开始我们来介绍如何安装 python-docx 库,具体需要以下两步操作:')# 创建二级标题
doc1.add_heading('第一步:安装 Python',2)# 创建段落描述
doc1.add_paragraph('在python官网下载python安装包进行安装。')# 创建三级标题
doc1.add_heading('第二步:安装 python-docx 库',3)# 创建段落描述
doc1.add_paragraph('window下win+R输入CMD打开命令行,输入pip install python-docx即可下载。')# 保存文件
doc1.save('word2.docx')

上面我们说了 add_heading 方法用来增加文章标题,不过通过上面代码我们能知道,这个方法的第二个参数为数字,其实这个就是用来标示几级标题的,在我们平时就用来标示章节。add_paragraph 方法则是用来在文章中增加段落的, 运行程序看下效果:

13cf1ff674e6ba6bd8536abd7243ad7e.png

字体和引用

前面我们通过 add_paragraph 方法增加了三个段落,现在我们就看下如何对段落中字体如何操作,以及引用段落的操作。继续修改以上代码,增加对文章字体字号、加粗、倾斜等操作,具体代码如下:

# 导入库
from docx import Document
from docx.shared import Pt
from docx.shared import Inches
from docx.oxml.ns import qn
from docx.shared import RGBColor# 新建空白文档
doc1 = Document()# 新增文档标题
doc1.add_heading('如何使用 Python 创建和操作 Word',0)# 创建段落描述
doc1.add_paragraph(' Word 文档在我们现在的生活和工作中都用的比较多,我们平时都使用 wps 或者 office 来对 Word 进行处理,可能没想过它可以用 Python 生成,下面我们就介绍具体如何操作……')# 创建一级标题
doc1.add_heading('安装 python-docx 库',1)# 创建段落描述
doc1.add_paragraph('现在开始我们来介绍如何安装 python-docx 库,具体需要以下两步操作:')# 创建二级标题
doc1.add_heading('第一步:安装 Python',2)# 创建段落描述
doc1.add_paragraph('在python官网下载python安装包进行安装。')# 创建三级标题
doc1.add_heading('第二步:安装 python-docx 库',3)# 创建段落描述
doc1.add_paragraph('window下win+R输入CMD打开命令行,输入pip install python-docx即可下载。')# 创建段落,添加文档内容
paragraph = doc1.add_paragraph('这是第二步的安装描述!')# 段落中增加文字,并设置字体字号
run = paragraph.add_run('(注意:这里设置了字号为20)')
run.font.size = Pt(20)# 设置英文字体
run = doc1.add_paragraph('这里设置英文字体:').add_run('This Font is Times New Roman ')
run.font.name = 'Times New Roman'# 设置中文字体
run = doc1.add_paragraph('这里设置中文字体:').add_run('当前字体为黑体')
run.font.name='黑体'
r = run._element
r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')# 设置斜体
run = doc1.add_paragraph('这段设置:').add_run('文字的是斜体 ')
run.italic = True# 设置粗体
run = doc1.add_paragraph('这段再设置:').add_run('这里设置粗体').bold = True# 设置字体带下划线
run = doc1.add_paragraph('这段为下划线:').add_run('这里设置带下划线').underline = True# 设置字体颜色
run = doc1.add_paragraph('这段字体为红色:').add_run('这里设置字体为红色')
run.font.color.rgb = RGBColor(0xFF, 0x00, 0x00)# 增加引用
doc1.add_paragraph('这里是我们引用的一段话:用Python改变人生,改变世界,FIGHTING。', style='Intense Quote')# 保存文件
doc1.save('word2.docx')

上面代码主要是针对段落字体的各种设置,每段代码都标有注释应该比较容易理解, 运行程序看下效果:

9cb6a51f15909e9cfcef8fbeaaa88b9c.png

项目列表

我们平时在使用 Word 时,为了能展示更清晰,会用到项目符号和编号,将内容通过列表的方式展示出来,下面我们新建一个文件 word1.py 并编写如下代码:

# 导入库
from docx import Document
from docx.shared import Pt
from docx.shared import Inches
from docx.oxml.ns import qn# 新建文档
doc2 = Document()
doc2.add_paragraph('哪个不是动物:')# 增加无序列表
doc2.add_paragraph('苹果', style='List Bullet'
)
doc2.add_paragraph('喜洋洋', style='List Bullet'
)
doc2.add_paragraph('懒洋洋', style='List Bullet'
)
doc2.add_paragraph('沸洋洋', style='List Bullet'
)
doc2.add_paragraph('灰太狼', style='List Bullet'
)
doc2.add_paragraph('2020年度计划:')# 增加有序列表
doc2.add_paragraph('CSDN达到博客专家', style='List Number'
)
doc2.add_paragraph('每周健身三天', style='List Number'
)
doc2.add_paragraph('每天学习一个新知识点', style='List Number'
)
doc2.add_paragraph('学习50本书', style='List Number'
)
doc2.add_paragraph('减少加班时间', style='List Number'
)# 保存文件
doc2.save('word1.docx')

8975b93141990e1f3a06088f6bad7e93.png

图片和表格

我们平时编辑文章时,插入图片和表格也是经常使用到的,那用 Python 该如何操作插入图片和表格?首先我们随便找了个图片,我这用了 Python的logo 标志图,文件名为 python-logo.png,利用add_picture添加图片;利用add_table添加表格,然后在 word1.py 文件中增加如下代码:

# 导入库
from docx import Document
from docx.shared import Pt
from docx.shared import Inches
from docx.oxml.ns import qn# 新建文档
doc2 = Document()
doc2.add_paragraph('哪个不是动物:')# 增加无序列表
doc2.add_paragraph('苹果', style='List Bullet'
)
doc2.add_paragraph('喜洋洋', style='List Bullet'
)
doc2.add_paragraph('懒洋洋', style='List Bullet'
)
doc2.add_paragraph('沸洋洋', style='List Bullet'
)
doc2.add_paragraph('灰太狼', style='List Bullet'
)
doc2.add_paragraph('2020年度计划:')# 增加有序列表
doc2.add_paragraph('CSDN达到博客专家', style='List Number'
)
doc2.add_paragraph('每周健身三天', style='List Number'
)
doc2.add_paragraph('每天学习一个新知识点', style='List Number'
)
doc2.add_paragraph('学习50本书', style='List Number'
)
doc2.add_paragraph('减少加班时间', style='List Number'
)
doc2.add_heading('图片',2)# 增加图像
doc2.add_picture('C:/Users/Y/Pictures/python-logo.png', width=Inches(5.5))
doc2.add_heading('表格',2)# 增加表格,这是表格头
table = doc2.add_table(rows=1, cols=4)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '编号'
hdr_cells[1].text = '姓名'
hdr_cells[2].text = '职业'# 这是表格数据
records = (
    (1, '张三', '电工'),
    (2, '张五', '老板'),
    (3, '马六', 'IT'),
    (4, '李四', '工程师')
)# 遍历数据并展示for id, name, work in records:
    row_cells = table.add_row().cells
    row_cells[0].text = str(id)
    row_cells[1].text = name
    row_cells[2].text = work# 手动增加分页
doc2.add_page_break()# 保存文件
doc2.save('word1.docx')

c737a1204166a1c823569609aeaaadcd.png

读取 Word 文件

上面写了很多用 Python 创建空白 Word 文件格式化字体并保存到文件中,接下来我们再简单介绍下如何读取已有的 Word 文件,请看如下代码:

# 引入库
from docx import Document# 打开文档1
doc1 = Document('word1.docx')# 读取每段内容
pl = [ paragraph.text for paragraph in doc1.paragraphs]print('###### 输出word1文章的内容 ######')# 输出读取到的内容for i in pl:print(i)# 打开文档2
doc2 = Document('word2.docx')print('\n###### 输出word2文章内容 ######')
pl2 = [ paragraph.text for paragraph in doc2.paragraphs]# 输出读取到的内容for j in pl2:print(j)# 读取表格材料,并输出结果
tables = [table for table in doc2.tables]for table in tables:for row in table.rows:for cell in row.cells:print (cell.text,end='  ')print()print('\n')

以上代码是将之前我们输出的两个文档内容都读取出来,当然这里只是打印到控制台,并没有做其他处理。现在我们执行看下结果:

a50548ce4959e245e8ce87bc93b8c2d7.png

Python 操作 CSV

简介

CSV

CSV 全称 Comma-Separated Values,中文叫逗号分隔值或字符分隔值,它以纯文本形式存储表格数据(数字和文本),其本质就是一个字符序列,可以由任意数目的记录组成,记录之间以某种换行符分隔,每条记录由字段组成,通常所有记录具有完全相同的字段序列,字段间常用逗号或制表符进行分隔。CSV 文件格式简单、通用,在现实中有着广泛的应用,其中使用最多的是在程序之间转移表格数据

CSV 与 Excel

因为 CSV 文件与 Excel 文件默认都是用 Excel 工具打开,那他们有什么区别呢?我们通过下表简单了解一下。

CSVExcel
文件后缀为 .csv文件后缀为 .xls 或 .xlsx
纯文本文件二进制文件
存储数据不包含格式、公式等不仅可以存储数据,还可以对数据进行操作
可以通过 Excel 工具打开,也可以通过文本编辑器打开只能通过 Excel 工具打开
只能编写一次列标题每一行中的每一列都有一个开始标记和结束标记
导入数据时消耗内存较少数据时消耗内存较多

基本使用

Python 通过 csv 模块来实现 CSV 格式文件中数据的读写,该模块提供了兼容 Excel 方式输出、读取数据文件的功能,这样我们无需知道 Excel 所采用 CSV 格式的细节,同样的它还可以定义其他应用程序可用的或特定需求的 CSV 格式。

csv 模块中使用 reader 类writer 类读写序列化的数据,使用 DictReader 类DictWriter 类以字典的形式读写数据,下面来详细看一下相应功能。首先来看一下 csv 模块常量信息,如下所示:

属性说明
QUOTE_ALL指示 writer 对象给所有字段加上引号
QUOTE_MINIMAL指示 writer 对象仅为包含特殊字符(如:定界符、引号字符、行结束符等)的字段加上引号
QUOTE_NONNUMERIC指示 writer 对象为所有非数字字段加上引号
QUOTE_NONE指示 writer 对象不使用引号引出字段

writer(csvfile, dialect=’excel’, **fmtparams)

返回一个 writer 对象,该对象负责将用户的数据在给定的文件类对象上转换为带分隔符的字符串

  • csvfile 可以是具有 write() 方法的任何对象,如果 csvfile 是文件对象,则使用 newline=’’ 打开;
  • 可选参数 dialect 是用于不同的 CSV 变种的特定参数组;
  • 可选关键字参数 fmtparams 可以覆写当前变种格式中的单个格式设置。

看下示例:

import csv
with open('test.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(['id', 'name', 'age'])# 写入多行
    data = [('1001', '张三', '21'), ('1002', '李四', '31')]
    writer.writerows(data)

151704c8d811e98623c428844ce18c6b.png

reader(csvfile, dialect=’excel’, **fmtparams)

返回一个 reader 对象,该对象将逐行遍历 csvfile,csvfile 可以是文件对象和列表对象,如果是文件对象要使用 newline=’’ 打开。看下示例:

import csv
with open('test.csv', newline='') as csvfile:
    reader = csv.reader(csvfile, delimiter=' ')for row in reader:print(', '.join(row))

d40a320ff659751f469c2d610a995dd3.png

Sniffer 类

用于推断 CSV 文件的格式,该类提供了如下两个方法:

sniff(sample, delimiters=None)

分析给定的 sample,如果给出可选的 delimiters 参数,则该参数会被解释为字符串,该字符串包含了可能的有效定界符。

has_header(sample)

分析示例文本(假定为 CSV 格式),如果第一行很可能是一系列列标题,则返回 True。

该类及方法使用较少,了解即可,下面通过一个示例简单了解一下。

import csv
with open('test.csv', newline='') as csvfile:
     dialect = csv.Sniffer().sniff(csvfile.read(1024))
     csvfile.seek(0)
     reader = csv.reader(csvfile, dialect)for row in reader:print(row)

Reader 对象

Reader 对象指 DictReader 实例和 reader() 函数返回的对象,下面看一下其公开属性和方法。

next()

返回 reader 的可迭代对象的下一行,返回值可能是列表或字典。

dialect

dialect 描述,只读,供解析器使用。

line_num

源迭代器已经读取了的行数。

fieldnames

字段名称,该属性为 DictReader 对象属性。

Writer 对象

Writer 对象指 DictWriter 实例和 writer() 函数返回的对象,下面看一下其公开属性和方法。

writerow(row)

将参数 row 写入 writer 的文件对象。

writerows(rows)

将 rows_(即能迭代出多个上述_ row 对象的迭代器)中的所有元素写入 writer 的文件对象。

writeheader()

在 writer 的文件对象中,写入一行字段名称,该方法为 DictWriter 对象方法。

dialect

dialect 描述,只读,供 writer 使用。

写读追加状态

'r':读'w':写'a':追加'r+' == r+w(可读可写,文件若不存在就报错(IOError))'w+' == w+r(可读可写,文件若不存在就创建)'a+' ==a+r(可追加可写,文件若不存在就创建)
对应的,如果是二进制文件,就都加一个b就好啦:'rb'  'wb'  'ab'  'rb+'  'wb+'  'ab+

- End -

分享Py&AI,等互联网干货,点亮 在看 78920de3d332175fafbd39c4c537bd35.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 页面输出一个页面_java学习之:一个完整页面输出信息的过程(以输出Doctor表中信息为例)...

最近在练习java程序,总结一下从数据库查询信息并输出到jsp页面的过程。主要数据处理在src.cn.javatest包下面项目预览1,配置项目根目录src目录下的druid.properties数据库信息(相当于一个数据库配置文件)里面的信息可以在下载druid中获得,只需…

[xsd学习]xsd介绍

一直以来项目中对xml格式的判断使用的都是dtd格式,直到最近才发现,不知何时都已经转为xsd来进行判断和校验,于是今天专门找资料看下,不得不说,对于这类资料的入门,w3cschool真是个不错的资料库,…

教学目标四个维度_【深度好文】体育教案中的教学目标与学习目标应如何表述...

体育教师大本营教学/训练/职业/成长强 烈 建 议 大 家 星 标 我 们教 学 路 上 ☆ 不 离 不 弃在以往看到的体育课的教案上,目标部分不是用教学目标就是用学习目标来表述,然而,这两种目标表达形式有没有本质区别?分别该如何表述…

java中检查性异常类_Java异常处理、java语言推崇使用检查类型异常

异常处理是java语言的重要特性之一,《Three Rules for effective Exception Handling》一文中是这么解释的:它主要帮助我们在debug的过程中解决下面的三个问题。什么出错了哪里出错了为什么出错java语言可以说是提供了过于完善的异常处理机制&#xff0c…

nodejs readfilesync 路径_Linux 磁盘多路径聚合multipath

在日常工作中我们经常遇到配置存储的多路径聚合。多路径的目的是,当主机HBA卡、线缆、交换机或者存储设备的控制器故障等原因造成一条物理路径失效时,服务器可以将通过此物理路径的I/O转移到其他正常的物理路径上面,应用程序不会觉察到这种改变,从而提高…

u 20ubuntu 安装 postfix_极力推荐和田咨询问题U型钢托盘厂家

12极力推荐和田咨询问题U型钢托盘厂家泊头市毅伽属制品有限公司坐落于河北省泊头市龙华街北4公里,濒临京沪、石黄高速公路以及104、307国道,另有廊泊路贯穿南北交通十分便利。本公司设计生产各种冷弯型钢,产品包括C型钢、Z型钢、U型钢、M型钢…

HTML5中lineCap端点样式遇到closePath()

定义和用法 lineCap 属性设置或返回线条末端线帽的样式。 注释:"round" 和 "square" 会使线条略微变长。 默认值:buttJavaScript 语法:context.lineCap"butt|round|square";属性值 值描述butt默认。向线条的每…

php鼠标悬停显示图片,鼠标滑过出现预览的大图提示效果

当鼠标滑过图片时,图片会出现预览的大图,大图下面还会有介绍文字。.aa{width:88px;height :100px;}$(function () {var x 10;var y 20;$("a.tooltip").mouseover(function (e) {this.myTitle this.title;this.title "";var imgT…

405 not allowed什么意思_二驴质问散打:为什么不救天道!面临一个亿赔款?次惑小仙女宣布与可乐分手!...

次惑小仙女发作品表示:对不起让你们失望了,慢慢也学着长大了,懂得了很多,以前每天就知道天真傻笑的玩,后来懂得了努力和加油,但是很多东西并不是大家看到的那样背后的事情谁又能知道。都认为他对我很好,只有自己知道,呵呵。有些时…

hdu.1254.推箱子(bfs + 优先队列)

推箱子 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6021 Accepted Submission(s): 1718 Problem Description推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个M*N的房间里有一个箱子和一个搬运…

ae合成设置快捷键_怎么在ae中剪切视频?怎么在ae里裁剪视频?

ae剪切裁剪视频教程:零基础学AE软件影视后期必修课程-AE新建合成-羽兔网​www.yutu.cn1、启动After Effects并导入视频第一个任务是打开一个新项目,并将视频加载到其中。首先从主菜单中选择新的构图。然后打开构图菜单,选择所需的分辨率等&am…

php js获取元素id,javascript通过中文id和class获取元素的方法

以前以为html元素中的id和class等只能通过字母数字或者下划线等特殊字符命名,如果单存使用中文浏览器不会报错,但是js是获取不到的,但是今天逛论坛的时候发现不是这样的。代码如下:运行结果:论坛来源是这个&#xff1a…

delphi random 六位_《蒙面唱将猜猜猜》第五季将播,六位唱将率先登场

原标题:《蒙面唱将猜猜猜》第五季将播,六位唱将率先登场新京报讯(记者 刘玮)《蒙面唱将猜猜猜》第五季将于11月1日21:10在江苏卫视首播,优酷视频全网独播。第五季中,猜评团不仅“觊觎”各路唱将的真实身份,…

java中sql之count,SQL COUNT() 函数--编程学习网

COUNT() 函数返回匹配指定条件的行数。SQL COUNT(column_name) 语法COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):SELECT COUNT(column_name) FROM table_name;SQL COUNT(*) 语法COUNT(*) 函数返回表中的记录数:SELECT COUNT(*) FROM tabl…

苹果笔记本双系统怎么切换_2020年你该怎么选择苹果笔记本,资深用户带你讲透MacBook Air MacBook Pro...

作为一名曾经的苹果生态开发者我2012年10月份购入自己的第一台苹果笔记本:MacBook Pro 13寸,那时候还很厚重,机械硬盘的配置,为了省钱,在官网翻新机渠道购买的,记得当初新机的原价是8000多,翻新…

苹果6s怎么导出照片_怎么恢复苹果手机删除的照片?今天教你三种找回方法

怎么恢复苹果手机删除的照片?手机的出现虽然带给我们很大便利,同时却也带来了一些小的麻烦。在手机上很多操作步骤都很简单,因此,难免会遇到手滑误操作的情况。拿照片这项内容来说,我们可能误删除一些本来不需要删除的…

iptables 开放远程_远程FX正式上市 指导价11.99万-12.99万元_搜狐汽车

本文车型速览除了文章作者的主观观点外,我们正尝试基于全网可查的客观数据,为您提供中立、客观的参考依据:本文部分车型速览:畅销车型质量排行top10展开微信扫码,直接一次看完附近所有城市低价(附近城市均有经销商可售…

matlab项目实例教程,matlab简明实例教程.doc

matlab简明实例教程.doc 南京航空航天大学王正盛1MATLAB数学工具软件实例简明教程王正盛编写南京航空航天大学南京航空航天大学王正盛2第一章MATLAB简介MALAB译于矩阵实验室MATrixLABoratory是用来提供通往LINPACK和EISPACK矩阵软件包接口的后来它渐渐发展成了通用科技计算图视…

pointcut 排除_宁河天津玻璃门地弹簧玻璃门故障排除

宁河天津玻璃门地弹簧玻璃门故障排除门扇玻璃应用钢丝卡固定。安装完毕要做好安装后的清洁工作.相关概念钢化玻璃钢化玻璃(Temperedglass/Reinforcedglass)属于安全玻璃。钢化玻璃其实是一种预应力玻璃,为提高玻璃的强度,通常使用化学或物理的方法&#…

四则运算心得

#include<stdio.h>#include<math.h>#include<windows.h>int right0;int wrong0;void add(){int a,b,c;arand()%100;brand()%100;printf("请回答&#xff1a;\n\t\t %d %d ",a,b);scanf("%d",c);if(abc){printf("回答正确!\n"…