问题

Python 打包成 exe,太大了该怎么解决?

回答
Python 打包成 exe 后,体积爆炸?别慌,这几招帮你瘦身!

辛辛苦苦写好的 Python 程序,想让没装 Python 环境的朋友也能轻松运行,打包成 exe 是个不错的选择。然而,不少人在打包过程中都遇到了一个头疼的问题:生成的 exe 文件体积巨大,动辄几十兆甚至上百兆,这可怎么是好?

别担心!今天我就来给大家揭秘,如何让你的 Python exe 瘦身成功,告别臃肿。这可不是什么玄乎的魔法,而是实打实的技巧和方法,保证让你茅塞顿开!

为什么你的 Python exe 会这么大?

在解决问题之前,我们先来搞清楚“罪魁祸首”是谁。Python 程序打包成 exe,主要会把以下几样东西“打包”进去:

1. Python 解释器本身: 即使你的程序很简单,也需要一套完整的 Python 运行环境才能执行。这就像你要给程序配一个“司机”和“汽车”,而这个司机和汽车本身就有一定体积。
2. 所有导入的库(Modules): 你的程序依赖的第三方库,比如 NumPy、Pandas、PyQt、Requests 等等,这些库的源码或编译后的代码都会被打包进去。有些库本身就比较“重”,比如科学计算相关的 NumPy,自然会增加不少体积。
3. 你的程序代码: 这是最小的部分,但也是不可或缺的。
4. 其他辅助文件: 比如一些资源文件、配置文件等,如果没处理好,也可能占用空间。

所以,看到这里你应该明白了,exe 体积大的主要原因在于Python 解释器和你导入的第三方库。

实操大法:让你的 Python exe 瘦身有术!

接下来,我们就进入实操环节,看看有哪些具体的方法可以帮助你给 exe “减肥”。

方法一:精简你的依赖库——“只取所需,不求所有”

这是最直接也最有效的方法。很多时候,我们打包程序时,会不自觉地导入一些其实用不到的库,或者导入了某个库里的大部分功能,但实际程序只用了其中一小部分。

怎么做?

1. 仔细检查 `import` 语句:
逐个审查: 重新阅读你的代码,看看每一个 `import` 语句是否真的有必要。有时候,一个功能可能在多个库中都有实现,选择体积更小、依赖更少的那个。
局部导入: 如果某个库只在某个函数或类中使用,可以考虑将 `import` 语句放到该函数或类的内部。这样,在程序未执行到这部分代码时,这些库就不会被加载,一定程度上能减小启动时的内存占用,虽然对最终 exe 的体积影响有限,但也是一个好习惯。
```python
def my_function():
import only_needed_library 局部导入
... 使用 only_needed_library
```
按需导入(from ... import ...): 如果你只需要某个库中的几个特定函数或类,可以使用 `from library import specific_function` 的方式,而不是 `import library`。这能避免将整个库都加载进来,虽然对打包后的 exe 体积影响不大,但对于内存占用是有帮助的。
2. 利用 `PyInstaller` 的 `hiddenimport` 参数(反向思维):
`PyInstaller` 在打包时会尝试自动检测你的依赖,但有时候会漏掉一些。你可能会看到警告信息说“hidden import”。
反过来思考,有时候 `PyInstaller` 可能会“好心办坏事”,把一些你没直接导入,但可能被其他库间接导入的东西也打包进去。
解决方案: 你可以尝试在打包时,明确告诉 `PyInstaller` 哪些库是你需要的,哪些是不需要的。虽然直接排除不需要的库不是 `PyInstaller` 的强项,但可以通过 只包含必需的库 来间接实现。

方法二:选择更精简的打包工具

市面上常用的 Python 打包工具,比如 `PyInstaller`、`cx_Freeze`、`py2exe`,它们在打包策略和结果上会有所差异。

`PyInstaller`: 这是目前最流行、支持也最好的打包工具。它提供了多种模式(`onefile` 和 `onedir`)。
`onedir` 模式: 会生成一个包含 exe 文件和一堆依赖库的文件夹。这个文件夹的总大小通常比 `onefile` 模式小,而且启动速度可能更快,因为它不需要将所有文件解压到临时目录。如果最终目标不是一个单独的 exe,而是希望用户在一个文件夹里运行,`onedir` 是个不错的选择。
`onefile` 模式: 将所有东西打包成一个单独的 exe 文件。这虽然方便用户分发,但因为需要将所有内容解压到临时目录才能运行,所以文件体积通常会更大,启动速度也会相对慢一些。
`cx_Freeze`: 也是一个不错的选择,它在某些情况下生成的 exe 体积可能比 `PyInstaller` 更小。
`py2exe`: 这是一个比较老牌的工具,现在用得相对较少,但有时也能在特定场景下有惊喜。

怎么做?

1. 尝试 `PyInstaller` 的 `onedir` 模式:
```bash
pyinstaller your_script.py onedir
```
然后你会得到一个 `dist` 文件夹,里面有一个子文件夹,里面就是你的 exe 和依赖。比较这个文件夹的总大小和 `onefile` 模式下的 exe 大小。
2. 比较不同打包工具: 如果你对体积非常敏感,可以尝试用 `cx_Freeze` 或 `py2exe` 来打包你的项目,看看哪个工具生成的 exe 更小。
使用 `cx_Freeze`:
首先安装:`pip install cx_Freeze`
创建一个 `setup.py` 文件:
```python
import sys
from cx_Freeze import setup, Executable

Dependencies are automatically detected, but it might be needed to
explicitly include or exclude packages with the `packages` and `excludes`
options.
build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]} 示例:排除 tkinter

GUI applications require a different base on Windows (the default is for a
console application).
base = None
if sys.platform == "win32":
base = "Win32GUI" 如果是GUI应用,使用Win32GUI

setup(
name = "your_app",
version = "0.1",
description = "My sample application!",
options = {"build_exe": build_exe_options},
executables = [Executable("your_script.py", base=base)]
)
```
运行打包命令:`python setup.py build`
使用 `py2exe`: 类似 `cx_Freeze`,也需要一个 `setup.py` 文件。

方法三:优化你的 Python 环境(更深入的技巧)

有时候,问题可能出在你打包时使用的 Python 环境本身。

怎么做?

1. 使用最小化的 Python 发行版:
Miniconda/Anaconda 精简安装: 如果你使用的是 Anaconda 或 Miniconda,确保你的基础环境中只安装了最基本的 Python 和你程序需要的少数库。避免安装一大堆用不到的科学计算库。
独立的 Python 环境: 最好为你的项目创建一个独立的虚拟环境(venv 或 conda environment),然后只在这个环境中安装你需要的库。这样可以避免从全局 Python 环境中带入大量不必要的包。
2. 移除不必要的 Python 标准库:
`PyInstaller` 在打包时,如果你的程序没有用到某个标准库,它通常不会将其打包进去。但如果你发现有特别大的标准库被打包了,而且你确定用不到,可以尝试使用 `PyInstaller` 的 `excludemodule` 参数来排除。
谨慎操作! 移除标准库需要非常小心,因为你可能会误删一些隐式依赖的模块。如果你不确定,最好不要随意尝试。

方法四:排除不必要的资源文件

有些库在打包时会附带一些大型的资源文件,比如图标、数据文件、文档等。

怎么做?

1. 检查库的安装目录: 在你使用的虚拟环境中,找到你安装的第三方库的目录(通常在 `Lib/sitepackages` 下),看看有没有体积很大的文件,而且你确定程序运行时并不需要它们。
2. 使用 `PyInstaller` 的 `adddata` 或 `addbinary` 参数(反向排除):
`PyInstaller` 允许你添加额外的数据或二进制文件。如果你发现某些文件被自动包含进去了,而你又想排除,可以尝试只明确包含你需要的文件。
例如,如果你不想包含某个库的文档,你可以尝试只打包代码本身,而不是整个库的目录。
更具体的方法是,在打包时,通过 `excludemodule` 参数来排除你不想要的文件或模块。 这是一个强大的功能,但需要你清楚地知道哪些文件是不需要的。

方法五:针对特定库的优化(高级技巧)

有些库本身就是“大块头”,但又无法轻易替换。这时,你需要做一些更深入的优化。

NumPy/Pandas:
这些库通常会包含不同平台的预编译二进制文件,如果你只在特定平台运行,可以尝试排除其他平台的组件。
`PyInstaller` 的 `collectsubmodules` 和 `collectdata` 参数 可以帮助你更精细地控制库的收集。
考虑使用更轻量的替代品: 如果你的数据分析需求不是特别复杂,可以考虑使用 `Polars`(比 Pandas 快,内存占用也可能更低)或者 `NumPy` 的一些更小的子模块。
GUI 库(PyQt, Kivy, Tkinter):
GUI 库通常体积较大,因为它们包含了大量的 UI 组件和渲染引擎。
选择更轻量的 GUI 库: 如果你的应用需求简单,可以考虑使用 `tkinter`(Python 内置,体积小)或 `PySimpleGUI`(一个封装了 Tkinter、Qt、wxPython 的库,易于使用且体积相对可控)。
按需导入 UI 组件: 确保你只导入了你实际使用的 UI 组件。

方法六:代码层面优化——“小处着眼,大处着手”

虽然代码本身对 exe 体积的影响最小,但优化的代码也可以间接帮助减小依赖,从而减小体积。

怎么做?

1. 精简函数和模块: 将不必要的代码、注释、调试信息清理干净。
2. 避免不必要的依赖: 尽量使用 Python 内置的函数和模块,或者选择更轻量级的第三方库。

打包过程中的注意事项

使用 `clean` 参数: 在每次打包前,使用 `pyinstaller clean your_script.py` 可以清理缓存,确保打包的是最新的代码和依赖。
使用 `loglevel=DEBUG`: 在打包过程中,如果遇到问题,可以使用这个参数来获取更详细的日志信息,帮助你定位问题。
在目标平台上打包: 尽量在与你最终发布平台相同的操作系统和架构上进行打包。比如,你想在 Windows 64 位系统上运行,就应该在 Windows 64 位系统上打包。跨平台打包容易出现兼容性问题和额外的依赖。

总结一下,如何让你的 Python exe 瘦身成功?

1. 审视你的 `import` 语句,只保留必需的库。
2. 尝试 `PyInstaller` 的 `onedir` 模式,并与 `onefile` 模式对比。
3. 如果体积仍然过大,可以考虑尝试 `cx_Freeze` 等其他打包工具。
4. 使用独立的、精简的 Python 环境进行打包。
5. 仔细检查库的安装目录,排除不必要的资源文件。
6. 对于大体积库,研究其精简选项或考虑替代品。
7. 保持你的 Python 代码简洁高效。

打包成 exe 的过程中,体积优化是一个需要不断尝试和调整的过程。耐心一点,结合以上这些方法,相信你一定能让你的 Python exe 变得苗条起来!祝你打包顺利!

网友意见

user avatar

感谢大家的赞收藏和感谢 有啥不懂的地方可以直接私信问我 谢谢大家支持[狗头

破百了好激动

等会 我写的明明比那个2.3k赞同回答的优质啊 赞起来啊

知友们 留下你们的赞同再走吧 笔芯

–––––––––––––––––––––––––––––

先说结论:在virtualenv下用upx压缩打包出来的exe最小

还不满意就上python-embed env 最下面有教程链接

原回答:

我也曾被这个问题困扰过 然鹅现在这个问题已经被我解决了(basically) 为了造福像我一样迷茫过或者正在迷茫的广大知友 我写了六篇文章分步骤(非常详细)介绍了reduce exe size的方法以及代替pyinstaller的方法

这是文章原文链接:

这是文章原文:

pyinstaller打包一个exe动辄几十M几百M (特别是import pandas以后)

知乎上居然没有人po这方面的”知识“(手动狗头)

查了很多关于reduce pyinstaller打包出exe大小的方法

列举如下

玄学解法1 去除不必要的库

当我们用cmd/powershell 输入这一段神秘代码并且回车的时候

pyinstaller除了会打包test.py使之成为一个exe之外,还会创建一的后缀名为 .spec 的文件

长这样

打开以后大概是这个样子

然后就可以愉快的在第13行的"[]"里面输入自己不需要的库啦

然后输入这样的代码重新打包自己的exe

       pyinstaller --clean -F test.spec     

不嫌麻烦的话一开始也可以这么写:

       pyinstaller --clean -F test.py --exclude-module matplotlib ......(此处省略)     

ps:像requests这些库啊 是和urllib有关联的 这也就是为什么 exclude urllib可能会有错误产生的原因啦

原文:

玄学解法2 共享依赖

package multiple exe(s) sharing the same dependencies:Using Spec Files

意思大概是打包多个exe用同一个”依赖库“ [不懂装懂,我也没试过 再次狗头]

有兴趣的同学可以去看一下

原文:

玄学解法3 虚拟环境

pyinstaller喜欢把没用的库一起打包进来

脑洞大开的程序猿(媛)们岂会轻易妥协?

我的python环境(虚拟)没有这些库 我看你怎么打包!

首先呢 我们需要一位名为virtualenv的同学帮助我们创建一个干净的python虚拟环境

有请!!

       pip install virtualenv     

然后要做的工作当然就是创建一个虚拟环境啦

       virtualenv example_env  # 命名请随意     

创建完成以后我们就会在python的Script文件夹里发现一个 与刚刚命名相同的文件夹

用cmd cd 到虚拟环境的Script目录然后 输入activate回车

就可以开始愉快地pip安装必要模块 然后pyinstaller啦

原文:

想在Pycharm等IDE中使用这个环境?

玄学解法4 UPX压缩大法

pyinstaller一直被人诟病以后自己也在反省为什么自己的工作质量竟然···

然后人家就给了补救方法:开源的upx压缩

并且在自己的打包代码里留给了upx一席之地(虽然把upx扔到Script目录里会默认使用 但是有和没有就是两码事对吧 upx:我也要面子的)

什么?还是会被骂? upx:这不怪我 我不背锅

虽然使用upx打包时间会长一些 但是为了缩小占用面积 为用户省下少得可怜的流量(加粗表示对国产三大运营商的尊敬 倾斜烘托了令人哽咽的氛围 为了这个可以忍!

upx在压缩:

ps: upx可能会有dll丢失错误 请到此文章原文评论区找解决方法~


以上四种[常规]操作呢 我还是喜欢第三种 错误少见效快 再次但是! ——

现在是时候有请老大哥python-embedded出场了

既然pyinstaller不听话 为什么不请出python-embedded来整治整治它呢?

python-embedded:在我面前你们都是渣渣

下面的链接介绍嵌入式python开发 代替pyinstaller 步步深入 步骤详细 不懂你砍我

user avatar

这是一个很长的故事,嫌长的直接看最后的结论

事情经过

上周接了个需求,写了个小工具给客户,他要求打包成exe文件,这当然不是什么难事。因为除了写Python的,绝大多数人电脑里都没有Python编译器,所以打包成exe,让用户(windows)双击就可以打开,也算是必备技能了。

直接用Pyinstaller,打开cmder:

       pyinstaller -Fw E:	esturl_crawler.py     

(-F 是打包成一个文件,-w是不出现调试窗口,因为我的小工具里有GUI,所以不用默认的调试窗口)

等了好久,终于完成打包,一看文件,嚯,200M!怪不得打包了这么久...

上网查了下资料,有人说,Anaconda里内置了很多库,打包的时候打包了很多不必要的模块进去,要用纯净的Python来打包。

有点道理,想着装虚拟机时间更长,准备拿出闲置的笔记本,重新装个Python来打包。

可刚巧我最近在学flask的时候,用到pipenv,虽然还不懂pipenv的强大之处,但知道它是个管理虚拟环境和包的工具,于是想着能不能用pipenv来创建一个新的python编译器以运行pyinstaller进行打包。

于是赶紧上网查了一下,pipenv pyinstaller,没有搜到有用的信息,干脆自己试一试,反正pipenv操作不麻烦。

打开cmder:

       #建立虚拟环境 pipenv install #进入虚拟环境 pipenv shell #安装模块 pip install 小工具.py里面用到的模块 #打包的模块也要安装 pip install pyinstaller #开始打包 pyinstaller -Fw E:	esturl_crawler.py     

打包完成,一看大小,11M!成功!

后来因为客户改了需求,我又改了一下源代码,然后换了个目录用pipenv重新打包,结果打包完又变回200M!尝试了无数次,怎么也回不到过去的20M!我都怀疑之前的20M是我的幻觉了。

不过无论如何要先交差,200M的“小“工具,用户体验肯定不行,所以我就用排除法,看看是哪个模块占的体积大,再想办法优化。最先怀疑的是GUI,我几乎毫不犹豫地认定是它,我用的是PySimpleGUI(强烈推荐,基于tkinter),先把PySimpleGUI的内容注释掉,再进行打包,你们猜打包完有多大?

198M!

看来是我错怪他了,经过几次排除,发现了罪魁祸首就是:fake_useragent

这个库是用来伪装请求头的,主要是我懒得复制user-agent,所以问题不大,把fake_useragent注释掉,自己手动粘贴一个user-agent就行了

       #from fake_useragent import UserAgent  #ua = UserAgent() #headers = {'user-agent':ua.random} headers = {'user-agent':'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36'}     

不用fake_useragent,打包成exe是 14M,已经不错了,先交差再说

之后经过了多次探索,多次放弃的边缘(反复删除创建环境),终于找到了完美打包的方法

结论

关键点就一个:要在虚拟环境里安装pyinstaller

如果你没有在虚拟环境中安装pyinstaller,你同样可以使用pyinstaller命令,但是调用的是你系统原本的那个python编译器,内含很多关联库,导致即使在虚拟环境中,你打包的exe文件仍然非常大。

另外一点要注意的是:要在虚拟环境里安装好你py文件中调用的库,不然打包出来也没法正常运行。

最后再复习一下正确流程 (前提是安装好pipenv):

       #建立虚拟环境 pipenv install #进入虚拟环境(上一步可省略,因为没有虚拟环境的话会自动建立一个) pipenv shell #安装模块 pip install requests pyquery pysimplegui fake_useragent #打包的模块也要安装 pip install pyinstaller #开始打包 pyinstaller -Fw E:testurl_crawler.py     


如果卡到某一个步骤的话,欢迎进群提问!

----------我建了个 Python 新手交流群供大家学习交流,要入群的请看我个人简介vx--------

类似的话题

  • 回答
    Python 打包成 exe 后,体积爆炸?别慌,这几招帮你瘦身!辛辛苦苦写好的 Python 程序,想让没装 Python 环境的朋友也能轻松运行,打包成 exe 是个不错的选择。然而,不少人在打包过程中都遇到了一个头疼的问题:生成的 exe 文件体积巨大,动辄几十兆甚至上百兆,这可怎么是好?别担.............
  • 回答
    参加数学建模,打算用 Python,这绝对是个明智的选择!Python 的强大之处在于它简洁易懂的语法和海量的库,能极大地简化你的建模过程。那么,到底需要学到什么程度呢?我的建议是:不必追求学完 Python 的所有内容,但要学精、学透与数学建模紧密相关的核心知识点。我来详细说说为什么以及具体需要掌.............
  • 回答
    Python 作为一种强大的数据科学语言,拥有丰富多样的数据可视化库,为用户提供了从基础绘图到复杂交互式可视化的广泛选择。除了 `matplotlib` 这个被誉为“万能瑞士军刀”的库之外,还有许多其他优秀的库,它们在特定领域、易用性、交互性或美学风格上各有千秋。下面我将详细介绍一些常用的 Pyth.............
  • 回答
    处理百亿行、数十列的数据是一项巨大的挑战,它不仅仅是简单地将数据加载到内存中,而需要一套系统性的策略来克服内存限制、提高处理效率和保证计算的稳定性。Python/Pandas本身在内存受限的情况下处理如此大规模的数据会遇到困难,但我们可以结合Pandas与其他工具和技术来应对。下面将详细讲解Pyth.............
  • 回答
    Python 是一门功能强大且用途广泛的语言,有很多很棒的练手项目可以帮助你学习和巩固知识。我会根据不同的学习阶段和兴趣方向,为你推荐一些值得详细介绍的项目,并说明为什么它们是好的练手项目。在开始之前,你需要具备的基础: Python 基础语法: 变量、数据类型(整型、浮点型、字符串、列表、元组.............
  • 回答
    Python 绝对是一门对面向对象编程 (OOP) 非常友好的语言,并且在很多方面都做得非常出色,让 OOP 的实践变得直观、简洁且强大。但正如所有技术一样,总有改进的空间。下面我将详细阐述 Python 在 OOP 方面的友好性,以及它可能存在的改进空间: Python 对面向对象编程的友好性体现.............
  • 回答
    Python 语言的强制缩进,也就是“代码块”的定义完全依赖于缩进,而不是像许多其他语言那样使用花括号 `{}` 或 `begin/end` 等关键字,这是一个在开发者社区中长期存在争议的话题。 是否是“败笔”,很大程度上取决于个人的编程习惯、对代码可读性的侧重以及所处的开发环境。下面我将详细阐述支.............
  • 回答
    Python 2 和 Python 3 之间存在许多重要的区别,这些区别使得 Python 3 更现代化、更易于使用、更强大。以下是一些主要的区别,我会尽可能详细地解释: 1. `print` 语句与 `print()` 函数Python 2: `print` 是一个语句(statement)。``.............
  • 回答
    Python 在变量的定义和赋值方面,确实与一些其他静态类型语言(例如 C++、Java)存在显著差异,这种差异常常被一些开发者看作是 Python 设计上的一个特点,但将其直接定义为“设计上的缺陷”则需要更深入的分析。要理解这个问题,我们首先需要明确 Python 在变量处理上的核心机制:Pyth.............
  • 回答
    Python 的标准库和第三方库非常丰富,覆盖了从基础操作到复杂应用的各个领域。以下是对这些库的详细分类和介绍,帮助你了解它们的用途和使用场景: 一、Python 标准库(内置模块)Python 的标准库是随 Python 解释器一同安装的,无需额外安装即可使用。以下是常见的分类和示例: 1. 基础.............
  • 回答
    Python 的“黑魔法”通常指的是一些不常见、非传统、或者需要深入理解 Python 底层机制才能掌握的技巧。它们能够让你写出更简洁、更强大、甚至有些“反直觉”的代码。这些“黑魔法”往往能极大地提高开发效率,但也可能降低代码的可读性,因此使用时需要权衡。下面我将尽量详细地介绍一些 Python 的.............
  • 回答
    这个问题嘛,就像问“我该选择披萨还是汉堡?”一样,答案很大程度上取决于你想做什么,以及你对“前景好”的定义。Python和Go,说实话,现在都处于职业生涯的黄金时期,硬要说谁“更好”,实在是个见仁见智的事。不过,咱们可以把它们俩的特点拉出来遛遛,看看哪个更对你的胃口。Python:万金油,社区的拥抱.............
  • 回答
    关于Python学习年龄这件事,我得说,这事儿挺灵活的,不像定个死规矩那样。我身边就有不少朋友,年龄跨度挺大的,都有自己的收获。如果你是还在学校的学生(小学、初中、高中): 小学阶段: 我觉得这得看孩子的兴趣和家长引导了。如果孩子本身就对电脑操作、小游戏制作、或者一些逻辑思维的游戏比较感兴趣,那.............
  • 回答
    在 Python 中,`with ... as ...` 语句主要用于资源管理,特别是文件的打开和关闭,或者其他需要进行清理操作的对象。它的核心目的是 确保无论代码块如何退出(正常结束、抛出异常),都会执行清理操作。如何理解 "跳出" `with...as` 语句?这里的“跳出”可以从两个层面来理解.............
  • 回答
    没问题,我来给你详细讲讲如何在 Python 中实现“按分类转换列表”。这个需求很常见,比如我们有一个包含各种类型数据的列表,我们想根据数据的类型把它们分成不同的子列表。咱们就用一个实际的例子来讲解,这样更容易理解。假设我们有一个混合类型的列表,里面有数字、字符串、布尔值等等,我们想把它们分别归类到.............
  • 回答
    在 Python 中,`len(x)` 并不是一个用于补零的函数,它实际上是用来获取序列(如字符串、列表、元组等)长度的。你提到的“利用 `len(x)` 补零”可能是在说,你需要根据某个序列的长度,将另一个序列(通常是数字或字符串)进行补零操作,使其达到一个特定的长度。核心概念:为什么是补零?补零.............
  • 回答
    好的,我们来聊聊如何用Python实现列表(list)中所有元素两两相加并找出最大值这件事。这听起来是个挺基础的操作,但我们把它拆解开来,深入理解一下其中的逻辑和实现方式。问题拆解:首先,我们要明确这个任务包含几个关键步骤:1. 获取列表: 我们需要一个列表作为输入。2. 两两相加: 列表中的每.............
  • 回答
    Python 正则替换:让每个匹配项拥有专属身份在日常的文本处理中,我们常常需要根据文本内容的规律性进行修改。Python的正则表达式提供了强大的模式匹配能力,而`re`模块的`re.sub()`函数则是进行替换操作的核心工具。然而,当我们需要将一个正则表达式匹配到的多个不同位置替换成不同的内容时,.............
  • 回答
    Python 函数的二次封装:让你的代码更优雅、更实用在 Python 的世界里,我们常常需要利用现有的库函数来完成各种任务。然而,原生的函数虽然功能强大,但有时在使用起来可能不够灵活,或者需要额外的配置才能达到我们想要的效果。这时候,“函数二次封装”就成了提升代码质量、提高开发效率的利器。简单来说.............
  • 回答
    好的,咱们就来聊聊 Python 爬虫怎么“对付”那些藏在 `.js` 文件里的链接。这事儿吧,不像直接抓 HTML 那么简单粗暴,因为 `.js` 文件是 JavaScript 代码,它本身不会直接告诉你链接是什么,你需要去“解读”它。想象一下,你拿到一份说明书,但这份说明书是用密码写的,你需要先.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有