01 | 拆分与合并:如何快速地批量处理内容相似的Excel?

你好,我是尹会生。今天是咱们的第一节课,我先带你学习下,如何用Python操作Excel。

Excel是我们在工作中用到的最频繁的软件之一,它有着强大的计算能力和便捷的图表功能。如果我们要在同一个Excel文件中进行操作,手工进行也很方便,但问题是,如果我们需要同时操作多个Excel文件,就是一件非常耗时的事情了。

在工作场景中,需要同时操作多个Excel的情况主要有2种:批量合并和批量拆分。我来带你看2个场景。

  • 批量合并。假设你需要对某些工作内容进行问卷调查,这时你用Excel做了调查问卷模版。我想你会这样做:先把Excel通过工作群分发给所有员工,再把群里收集到的反馈附件汇总成一个文件。
  • 批量拆分。假设你是公司的财务人员,你需要使用Excel对员工工资进行核算,之后再打印出来。但是公司要求员工薪水保密,所以每个员工的工资需要拆分成一个独立的文件,最后还需要打印出来。

无论是合并,还是拆分,我们都面临着一个困境:没有现成的软件可以实现多个Excel文件的合并和拆分操作,所以你只好对每一个Excel文件都进行“打开-复制粘贴-保存”的工作。

很多人在面对这样的工作需求时,都忍不住立马去做,却很少停下来分析问题。其实,这三步是很简单的工作,不过也是无意义的重复工作,既浪费了时间,又没有真正产生价值。

幸运的是,这些工作都可以通过Python来解决。今天,我就给你介绍一下用Python实现重复工作自动化,快速实现Excel的合并和拆分的方法。

如何用Python手工操作一个Excel文件?

刚刚我们说到批量处理,其实也就是逐一处理多个文件。如果我们想要提升这类工作的效率,就可以先借助Python把每一次处理都自动化。所以,在讲具体的合并和拆分方法前,我们要解决的第一个问题,就是用Python代替你的双手来操作一个Excel文件。

如果要用Python操作Excel文件,首先就要支持读写Excel的功能。在Python中,要想实现对某一个功能的支持,就需要安装扩展库。

支持Excel读取的扩展库叫做xlrd库,支持Excel写入的扩展库叫做xlwt库。我们可以使用下面的命令行进行安装:

pip3 install xlrd 
pip3 install xlwt 

那么,如何使用Python读取Excel文件的内容呢?你可以使用这样的代码实现:

import xlrd

file = '/Users/user1/Desktop/a.xls'

data = xlrd.open_workbook(file)
table = data.sheets()[0]
value = table.cell_value(rowx=4, colx=4)

虽然代码很简单,但是它对自动化操作Excel的意义非常大。

试想一下,如果能够使用Python替代全部的手工操作,大批量的文件就可以使用Python的循环功能自动化完成对每一个文件的自动处理工作了。

对于编程语言来说,文件合并的步骤可以分解为读取第一个文件,读取第二个文件,将第一个文件的内容追加到第二个文件下方。

所以在我们学会使用Python读取Excel文件之后,我们还需要掌握如何将读取的内容写入到Excel文件。写入文件的代码如下:

import xlwt

dst_file = '/Users/edz/Desktop/文章1/result/结果.xlsx'

workbook = xlwt.Workbook(encoding='utf-8')
xlsheet = workbook.add_sheet("统计结果")

# 写入内容,假设取出的内容是value
xlsheet.write(0, 0, value)

# 保存文件
workbook.save(dst_file)

可以看到,写入文件的时候,我们使用了一个叫做write的函数。它的前两个参数代表的写入位置,分别是指定写入的行和列坐标。无需多言,这个写入位置非常重要。如果按照上面的代码方式写入,也就是前两个参数均指定为0,就会覆盖这个Excel文件中的现有内容了。

所以,你如果想完成合并操作的话,就要实现对现有Excel内容进行追加写入。通常我们会先获取现有的内容一共有多少行、多少列,然后向后移动一个位置,再进行写入。

这种追加写入的方式,在我们的工作场景中非常常见。接下来,我们就看看怎么用追加写入的方式,实现多个Excel文件的合并吧。

怎样实现Excel的合并?

我们还是用前面提到的做调查问卷模板的场景,来具体讲一讲怎么实现Excel的合并。这里,我们就要用到一个重要功能了:循环功能

循环功能的核心代码是:

from pathlib import Path, PurePath

# 指定要合并excel的路径
src_path = '/Users/edz/Desktop/文章1/调查问卷'

# 取得该目录下所有的xlsx格式文件
p = Path(src_path)
files = [x for x in p.iterdir() if PurePath(x).match('*.xlsx')]

在这段代码中,我使用了for语句,实现了Python的循环功能。通过这样的功能,我可以依次获取src_path变量指向的路径下所有的文件。同时,为了避免这个目录里的文件类型过多,我使用一个if语句用于条件判断,只提取.xlsx结尾的文件。

现在,用Excel实现调查问卷自动化的主要功能已经都实现了。接下来,我们看看怎样实现整个工作过程。我把它们的工作流程定义为三个步骤:

  1. 找到整个工作过程当中重复操作的部分;
  2. 将重复操作的部分需要哪些手工操作找出来,使用Python编写程序代替手工操作的部分;
  3. 对重复的部分,使用循环语句进行批量处理。

如果你对把手工操作改成Python程序,还没有任何经验的话,我还可以为你提供更直观的办法,叫做画时序图

我先带你看看时序图是什么呢?如下图表:

简单来讲,时序图就是以时间顺序来排列程序中的事件的图表。通过上图,你应该很容易看出重复操作的这四个事件:

  1. 打开文件;
  2. 提取用户填写内容;
  3. 粘贴到汇总文件;
  4. 关闭文件。

下面,我们就用Python来替代这四个事件。由于它们是重复的,所以我会使用for循环对它们依次进行处理。

回到我们的Excel做调查问卷的场景。当我们回收了调查问卷之后,每份问卷的格式是完全相同的,刚好可以利用上面提到的循环功能处理每份问卷。而问卷的选项则是我们需要提取出来用于汇总的,所以我们要使用Python实现读取Excel调查问卷的功能,最后再写入到一个新的Excel中。

好了,我们来看下这一功能的Python代码是如何编写的:

import xlrd
import xlwt
from pathlib import Path, PurePath
# 导入excel和文件操作库

# 指定要合并excel的路径
src_path = '/Users/edz/Desktop/文章1/调查问卷'
# 指定合并完成的路径
dst_file = '/Users/edz/Desktop/文章1/result/结果.xls'

# 取得该目录下所有的xlsx格式文件
p = Path(src_path)
files = [x for x in p.iterdir() if PurePath(x).match('*.xls')]

# 准备一个列表存放读取结果
content = []

# 对每一个文件进行重复处理
for file in files:
    # 用文件名作为每个用户的标识
    username = file.stem
    data = xlrd.open_workbook(file)
    table = data.sheets()[0]
    # 取得每一项的结果
    answer1 = table.cell_value(rowx=4, colx=4)
    answer2 = table.cell_value(rowx=10, colx=4)
    temp = f'{username},{answer1},{answer2}'
    # 合并为一行先存储起来
    content.append(temp.split(','))
    print(temp)
    # 输出
    # 韩梅梅,D,B
    # 李雷,D,C

# 准备写入文件的表头
table_header = ['员工姓名', '第一题', '第二题']

workbook = xlwt.Workbook(encoding='utf-8')
xlsheet = workbook.add_sheet("统计结果")

# 写入表头
row = 0
col = 0
for cell_header in table_header:
    xlsheet.write(row, col, cell_header)
    col += 1 

# 向下移动一行
row += 1
# 取出每一行内容
for line in content:
    col = 0
    # 取出每个单元格内容
    for cell in line:
        # 写入内容
        xlsheet.write(row, col, cell)
        # 向右移动一个单元格
        col += 1
    # 向下移动一行
    row += 1
# 保存最终结果
workbook.save(dst_file)

在这段代码中,Excel的读取和写入操作、for循环操作都派上了用场,它的整个工作过程就像我画的时序图一样:先打开用来汇总的Excel文件,依次对多个调查问卷进行读取,最后逐行写入到新建立的汇总文件中

合并后的效果如下图:

有一点需要你注意的是,为了让你更好地理解Python循环的工作过程,我没有严格遵守编码规范,而是尽可能地让程序按照从上到下的顺序执行。如果你已经不是第一次使用Python,可以根据你的使用习惯,将程序进一步封装成Python里的函数,更加优雅地去实现它。

总的来说,在使用Python对Excel的合并操作时,需要你掌握的最核心的操作就是读写文件和行列坐标控制。熟练掌握这两个功能,你才能一次得到想要合并成的样子,不用再对Excel进行二次的手工操作。

怎样实现Excel的拆分?

对于批量操作Excel,还有一种情况是批量拆分。比如很多公司会用Excel记录和统计员工的薪水、记录货物信息、记录客户情况等数据。这些数据越来越多之后,文件会越来越大,打开文件和查找速度就会变得很慢,最后只好按照某些列进行Excel的拆分。

接下来,我就为你讲解一下如何进行Excel的批量拆分。让我们来看一个工资条的案例。

例如我在一个Excel中存放了工资信息,需要把第一行的表头和员工工资拆分成一个以员工名字命名的Excel文件。我来带你看下具体该怎么操作:

如果把拆分工作也画成时序图,就会发现,逐行读取可以使用循环功能批量操作,对每一行的内容处理,如果能使用Python进行自动化的话,一个Excel拆分的工作就全部能使用Python自动化实现了。所以,我打算设计一个for循环语句用于遍历所有的行,在for循环语句当中实现对每一行具体内容的处理。

我把文件拆分的关键代码写了出来,你可以参考一下:

for line in range(1,employee_number):
    content = table.row_values(rowx=line, start_colx=0, end_colx=None)
    # 将表头和员工数量重新组成一个新的文件 
    new_content = []
    # 增加表头到要写入的内容中
    new_content.append(salary_header)
    # 增加员工工资到要写入的内容中
    new_content.append(content)
    # 调用自定义函数write_to_file()写入新的文件
    write_to_file(filename = content[1], cnt = new_content)

在这段代码的第一行,我使用了一个range函数,它会生成从1到员工总数的数字范围。你可能会问,为什么没有直接写出Excel中总员工的数量,而是使用employee_number这样一个变量呢?

这是因为,如果直接写出员工数量,一旦遇到员工入职或员工离职等情况,你就需要根据Excel中的行数重新编写Python代码,而我现在使用的方式是每次打开Excel文件,会自动统计员工的数量(即行数),这种编写代码的方式能够让你的程序有更好的扩展性,一般这种方式用于处理文件内容经常变动的情况。

文件的批量拆分也是通过循环来实现逐行处理的功能的,但是你需要注意拆分以后的要保存的文件名称不要重复,不然很容易导致Excel中只有最后一次循环写入的内容。

小结

今天,我为你讲解了如何使用Python代替手工进行Excel的批量合并和拆分操作。一般来说,批量合并和拆分主要有几个步骤:

  1. 手动或借助时序图找到需要重复操作的部分。
  2. 将重复的部分用Python实现自动化操作。
  3. 对Python实现自动化的脚本,再用循环功能实现批量操作。

Python有着丰富的扩展库,当你掌握了熟练操作Excel的方法之后,对于WPS等其他办公软件,也可以通过相应的API进行类似的合并和拆分操作

除了基本操作呢,我还给你介绍了分析问题的方法——时序图。通过时序图,你可以找到那些运行逻辑中重复的部分,利用循环完成自动化操作。

不管是利用Python代替手工操作节约时间,还是使用循环代替手工多次执行减少工作难度,这些都是提升工作效率的有效办法。希望你能在处理日常工作时多思考,有意识地把你的日常办公工作自动化。

思考题

欢迎你在课程后留言,告诉我使用Python解决了你工作中的哪些重复性问题。

如果你觉得这节课有用,能解决你的办公效率问题,欢迎你点击“请朋友读”,分享给你的朋友或同事。

编辑小提示:专栏的完整代码位置是https://github.com/wilsonyin123/python_productivity,可点击链接下载查看。或者通过网盘链接提取后下载,链接是: https://pan.baidu.com/s/1UvEKDCGnU6yb0a7gHLSE4Q?pwd=5wf1,提取码: 5wf1。

精选留言

  • 达文西

    2021-02-03 19:10:24

    上周刚碰到类似的需求,客户发过来的excle跟系统要求的模板跟数据格式都不对应,上万条数据,手动改肯定是搞不来了.就自己摸索着一天用python处理了一下做适配.不得不说python确实简单好学,很适合处理这些简单重复的业务场景.
    作者回复

    这是python最擅长的领域之一了。给这些非标的数据做格式化特别好用。

    2021-02-05 14:24:53

  • 🐑

    2022-03-30 22:51:18

    编辑小提示:专栏的完整代码位置是https://github.com/wilsonyin123/python_productivity,可点击链接下载查看。

    或者通过网盘链接提取后下载,链接是: https://pan.baidu.com/s/1UvEKDCGnU6yb0a7gHLSE4Q?pwd=5wf1,提取码: 5wf1。
  • 李京斌

    2021-02-07 13:48:29

    能否共享讲课中提到的文件(EXCEL文件等)。
    作者回复

    https://github.com/wilsonyin123/python_productivity
    代码和课程中的文件都在链接中

    2021-02-09 20:20:48

  • 旧草

    2021-02-04 00:43:57

    例子保存的excel是xlsx,而官方文档写着:
    xlwt is a library for writing data and formatting information to older Excel files (ie: .xls) by https://xlwt.readthedocs.io/en/latest/
    作者回复

    感谢指正,xlsx应该为xls格式

    2021-02-05 14:35:31

  • Nick

    2021-02-04 21:34:16

    老师,我现在正好也碰到类似这样合并Excel文件的业务场景。大概有几十个拆分的Excel文件,要合并导入到数据库中,按照今天课程的思路,将所有的数据合并到一个Excel文件中来处理,但现在的问题是数据量比较大,超过了千万条记录。已经超出了Excel的最大范围,请问这种情况该怎么处理?我自己目前想到的是通过循环读所有的Excel文件,将数据一条条的插入到数据库中,请问老师还有什么高见?
    作者回复

    千万条数据存入到 Excel已经不合适了。存入到数据库是比较好的解决方案。
    我们以MySQL为例,为了避免你的内存不足,建议你读取一个文件向数据库写一次。python可以使用mysqlDB这个库写入数据库。
    如果你需要跨文件做一些关联处理,必须一次性把这些文件都读入到内存的话,可以使用一个叫做pandas的库来进行相关处理。
    如果数据的量级再大,建议你直接写入数据库,用SQL来处理数据之间的关系。

    2021-02-05 15:23:51

  • Fan

    2021-02-03 21:37:15

    哈哈哈,这个主题讲得好,比爬虫,Django 那些内容实用多了。
    作者回复

    都很有用,过年女朋友让你在某东某宝抢个化妆品,爬虫的功能就派上用场了。

    2021-02-05 14:20:48

  • 唐超伟

    2021-03-01 09:51:41

    2.01版本的xlrd不支持xlsx文件,只支持xls文件
    亲测装旧版本的可用
    pip install xlrd==1.2.0
    作者回复

    感谢反馈, 可以使用openpyxl库代替xlrd xlwt 实现xlsx文件的读写

    2021-03-01 12:36:36

  • 陈芳

    2021-03-11 16:11:00

    像我这样情况的,是不是应该学习【零基础学Python】,而不是这个课程。感觉十分吃力,连怎么开门都不知道
    作者回复

    你好,我觉得问题并不是对python不熟悉造成的,而是对编程的基础概念比如运行环境、计算机原理等不熟悉导致,这些知识对于初学者没有必要先全部掌握,会造成学习的挫败感,建议你可以先跟着专栏的程序来模仿,通过模仿再慢慢理解,之后再从理解到运用,之后再慢慢补齐计算机原理和windows系统知识,这样会让进阶之路更平缓一些

    2021-03-11 22:55:41

  • 谢韬 Fragos

    2022-03-12 13:36:15

    我用openpyxl3.0.9写的支持xlsx格式的代码供大家参考。谢谢尹老师的指导。
    from openpyxl import load_workbook
    from pathlib import Path,PurePath
    from openpyxl import Workbook
    src_path='/Users/tx/Desktop/文章1代码/调查问卷'
    dst_path = '/Users/tx/Desktop/文章1代码/result/结果.xlsx'
    p= Path(src_path)
    files= [x for x in p.iterdir() if PurePath(x).match('*.xlsx')]
    # print(files)
    content = []
    for file in files:
    username = file.stem
    # print(file)
    wb = load_workbook(file)
    # print(wb.sheetnames)
    ws=wb.active
    # print(ws)
    answer1 = ws['E5'].value
    answer2 = ws.cell(row=11,column=5).value
    print(answer1)
    print(answer2)
    temp = f'{username},{answer1},{answer2}'
    content.append(temp.split(','))
    print (temp)
    print(content)

    ws1_header =['员工姓名','第一题','第二题']
    wb1= Workbook()
    ws1 = wb1.active
    ws1 = wb1.create_sheet("统计结果")
    rw=1
    col=1
    for cell_header in ws1_header:
    ws1.cell(row=rw, column=col,value=cell_header)
    col +=1

    rw +=1
    for line in content:
    col=1
    for cell in line:
    ws1.cell(row=rw, column=col, value=cell)
    col+=1
    rw+=1

    wb1.save(dst_path)
  • 比国王

    2021-12-20 20:56:57

    老师,只论报表的拆分和合并,Python比VBA强在哪些方面?因为打开Excel就可以写VBA,非常方便,但如果知道Python比VBA更好的话,就可以说服自己学习Python而放弃使用VBA了。
    作者回复

    只论报表的拆分和合并 ,python 和 VBA 都是利用 COM组件和Excel完成底层交互的。但是考虑现在代码的丰富程度,以及学习成本,Python无疑要比VBA要好太多,我来说服你学Python吧 :)

    2021-12-22 13:27:06

  • 巩春雨

    2021-02-08 17:48:38

    老师,您讲的都是对于一些简单格式的excel数据有效。实际工作中财务的一些表格都是包含大量的格式,如合并单元格,涂色,隐藏,筛选及单元格内存在大量的公式。如果我把10个文件合并到一个文件中的不同sheet,如何能把相应的格式及公式快速的复制过去
    作者回复

    你好啊, 我想先带你解决从手动到自动的思路问题, 自动化的前提解决了,再细化特殊问题,.
    比如你提到的,单元格公式问题,公式能够正常处理的前提是是否被正常读取了,你会发现openpyxl 、xlrd这两个模块在读取excel的时候,有一个data_only 参数,控制着读取公式的行为, data_only为True读取的公式单元格就是None(需要用excel再打开文件一次才能显示值),如果是False就是公式本身.
    还有一个终极方案,用python将公式内容以python字符串方式写入,如:
    xls["B10"] = "=SUM(B1:B9)"
    通过这两个参数控制

    2021-02-09 20:09:12

  • BBQ

    2021-02-05 16:31:32

    老婆总是让我批量处理文件,上次学用 PowerShell 写了一个小程序,非常难写。用Python 简单多了。
    作者回复

    Python在网络和文件库的丰富程度上,是ps无法比拟的,但是在命令行方面ps也是非常强悍的,我在加餐当中也会使用到powershell,为你讲解它擅长的地方。

    2021-02-07 13:20:45

  • 谢韬 Fragos

    2022-03-14 10:54:41

    Excel 文件拆分的持xlsx格式的代码供大家参考。我把注释都加上了。 谢谢尹老师的指导。
    from openpyxl import load_workbook
    from pathlib import Path,PurePath
    from openpyxl import Workbook
    #工资单文件
    salary_file = '/Users/tx/Desktop/文章1代码/工资单/工资单.xlsx'
    #拆分文件保存路径
    dst_path1 = '/Users/tx/Desktop/文章1代码/工资单'
    wb2= load_workbook(salary_file)
    ws2=wb2.active
    # print(wb2.sheetnames)
    #取得表头
    for rw1 in ws2.iter_rows(min_row=1, max_col=None,max_row=1,values_only=True):
    salary_header=rw1
    #print(salary_header)
    #定义写入文件的函数
    def write_to_file (filename,cnt):
    wb3 = Workbook()
    ws3= wb3.create_sheet("本月工资")
    rw = 1
    for line in cnt:
    col=1
    for cell in line:
    ws3.cell(row=rw, column=col, value=cell)
    col+=1
    rw+=1
    wb3.save(PurePath(salary_file).with_name(filename).with_suffix('.xlsx'))
    #取得员工数量
    employee_number= ws2.max_row
    print(employee_number)
    #取得每一行,并用第二个单元格作为新的文件名
    for line in range (2,employee_number+1):
    for rwn in ws2.iter_rows(min_row=line, max_col=None, max_row=line, values_only=True):
    content = rwn
    print(content)
    #将表头和员工数量组成一个新文件
    new_content =[]
    #增加表头到要写入的内容中
    new_content.append(salary_header)
    new_content.append(content)
    write_to_file(content[1],cnt=new_content)
  • 老李书店

    2021-04-22 16:44:45

    请问下有案例文件吗
    作者回复

    您好,有的,在github下载, 每一课我都打包成了一个zip压缩包供你练习。
    https://github.com/wilsonyin123/python_productivity

    2021-04-26 16:01:47

  • 落曦

    2021-02-07 15:12:11

    老师您好,我试了一下您的代码,第一个有问题,运行出错:
    Traceback (most recent call last):
    File "D:/pycharmproject/Exceldemo.py", line 10, in <module>
    value = table.cell_value(rowx=4, colx=4)
    File "D:\pycharmproject\venv\lib\site-packages\xlrd\sheet.py", line 420, in cell_value
    return self._cell_values[rowx][colx]
    IndexError: list index out of range

    后来当我调试您github上的代码时,没有错误,然后根据留言区@旧草的提示,打开了您工资单.xlsx的文件,发现命名错误,于是我重命名为工资单.xls后来就能直接在excel上读取内容了。

    所以我意识到xlrd 只适用于xls文件,老师您的电脑是mac,我用的windows可能是系统的不同吗?
    python 3.7.0
    xlrd 1.2.0
    xlwt 1.3.0
    pip 21.0.1
    作者回复

    您好, 错误提示如下:
    IndexError: list index out of range
    是在
    value = table.cell_value(rowx=4, colx=4)
    出现了列表超过索引范围报的一个错误.

    为什么报错的是一个列表呢?cell_value的底层实现是一个列表,所以报错提示是列表的索引超过了限制,

    什么时候会报错index error ?比如列表只有三个元素,你引用第四个自然会报错,如果再往前面的代码追溯,就是文件打开失败,导致了列表没有数据,而你读取了_cell_values[4][4],所以超过了列表的长度限制,报了错

    中间运行过程你可以了解一下, 你的解决办法是对的,从文件名下手.更正了文件路径错误的问题.后续我还会为你讲解异常处理,你可以在打开文件失败的时候就直接报文件打开失败错误,就不用通过内置错误间接分析文件名指定错误的问题了

    2021-02-09 20:31:30

  • Amaplan

    2022-09-27 14:21:54

    用pandas合并的代码
    from pathlib import Path,PurePath
    from turtle import pd
    import pandas as pd
    from openpyxl import load_workbook
    import xlwt
    import xlrd
    src_path='/Users/ee225/mianshi/Python自动化办公实战课/Python自动化办公实战课/文章1代码/文章1代码/调查问卷'

    p=Path(src_path)
    files=[x for x in p.iterdir() if PurePath(x).match('*.xlsx')]

    content=[]
    for file in files :
    df1=pd.read_excel(file)
    username=file.stem
    data=pd.read_excel(file)
    answers1=data['Unnamed: 4'][3]
    answers2=data['Unnamed: 4'][9]

    temp=f'{username},{answers1},{answers2}'
    content.append(temp.split(','))
    df6=pd.DataFrame(content,columns=['员工姓名','第一题','第二题'])

    df6.to_excel('excel1.xlsx', sheet_name='Sheet1', index=False) # index false为不写入索引
  • Amaplan

    2022-09-27 14:21:27

    用pandas拆分的代码
    import pandas as pd
    from pathlib import Path,PurePath


    src_path='/Users/ee225/mianshi/Python自动化办公实战课/Python自动化办公实战课/文章1代码/文章1代码/工资单/工资单.xlsx'

    p=Path(src_path)

    datas=pd.read_excel(p)
    print(type(datas))
    #print(datas.iloc[0])

    print("输出列标题",datas.columns.values)

    for data in datas.iloc:
    #
    noname=data['员工编号']

    #data=pd.DataFrame(data1,columns=datas.columns.values)

    data.to_excel(f'{noname}.xlsx', sheet_name='Sheet1',startrow=0, startcol=0) # index false为不写入索引, index=False
    data1=data.T
    print(type(data))
  • 刘春富

    2022-01-11 16:28:13

    # 调用自定义函数write_to_file()写入新的文件
    write_to_file(filename = content[1], cnt = new_content)

    这个write_to_file()函数的代码是怎样的?谢谢
    作者回复

    https://github.com/wilsonyin123/python_productivity
    这里有完整的源代码,为了保持文章阅读的连贯性,我没有贴完整代码上去,在这里可以下载到。

    2022-01-22 20:59:16

  • Geek_39bcb2

    2021-12-08 21:40:17

    初学者,老师帮忙解答一下找个是怎么回事
    H:\PycharmProjects\pythonProject1\venv\Scripts\python.exe H:/PycharmProjects/pythonProject1/main.py
    File "H:\PycharmProjects\pythonProject1\main.py", line 2
    pip3 install xlrd
    ^
    SyntaxError: invalid syntax

    Process finished with exit code 1

    作者回复

    pip3 install xlrd 是安装Python软件包的命令。换句话说pip实际上是执行了pip3.exe命令。
    因此它需要和python.exe 一样,要放在命令行里运行。而你将它放入到了main.py中,也就出现了上面的错误。

    我最开始学的时候是这样记住pip和python的关系的。pip是管理python能够使用哪些第三方库的,所以它们没有从属关系,都要在命令行运行。

    2021-12-22 12:55:05

  • 巩会杰

    2021-11-29 21:21:25

    卸载旧版本包出现错误:

    C:\Users\Administrator>pip uninstall xlrd
    Traceback (most recent call last):
    File "D:\Program Files\Python310\lib\runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
    File "D:\Program Files\Python310\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
    File "D:\Program Files\Python310\Scripts\pip.exe\__main__.py", line 4, in <module>
    ModuleNotFoundError: No module named 'pip'

    开始就错误不知道怎么学习了,求老师解答下,这个有学习群吗?
    作者回复

    在第一课和课程开头会有我们的QQ群。
    出现ModuleNotFoundError: No module named 'pip'
    的原因,是命令行找不到pip这条命令导致的。最有可能的原因是你在安装第一次软件包之后,它提示你需要更新pip,你按照它的提示执行了pip的升级。
    这里有两种解决办法,一种是后续使用新版本Python推荐的方式:
    python -m pip install xxx 这种方式来安装。
    另一种是先在命令行执行
    python -m ensurepip
    执行完成后,再进行pip的更新
    python -m pip install --upgrade pip
    即可解决你遇到的问题

    它的根本原因是pip的命令搜索路径导致的,只在windows中出现

    2021-12-22 12:47:18