普通视图

发现新文章,点击刷新页面。
昨天以前首页
  • ✇辰安博客
  • Ghost Downloader v3.5.2绿色版 一款Python开发的多线程下载工具辰安
    Ghost Downloader一款多线程下载工具,它完全由Python语言开发而成。这款软件不仅支持高效的多线程下载技术,还具备断点续传功能,这意味着即使下载过程中遇到网络中断或其他问题导致下载暂停,用户也可以在恢复后从上次中断的地方继续下载。软件还有下载记录、校验文件等功能。特点是能像IDM一样智能分块但又不需要合并文件。 GitHub github.com/XiaoYouChR/Ghost-Downloader-3 蓝奏云下载:https://zyd.lanzouo.com/iGbAU2nkpeoj
     

Ghost Downloader v3.5.2绿色版 一款Python开发的多线程下载工具

作者 辰安
2024年11月30日 23:03

Ghost Downloader一款多线程下载工具,它完全由Python语言开发而成。这款软件不仅支持高效的多线程下载技术,还具备断点续传功能,这意味着即使下载过程中遇到网络中断或其他问题导致下载暂停,用户也可以在恢复后从上次中断的地方继续下载。软件还有下载记录、校验文件等功能。特点是能像IDM一样智能分块但又不需要合并文件。

80edc41a997c56f459dd618157a64a95

GitHub

github.com/XiaoYouChR/Ghost-Downloader-3

蓝奏云下载:https://zyd.lanzouo.com/iGbAU2nkpeoj

  • ✇爱吃猫的鱼BLOG
  • QRcodeGen项目介绍,基于Python打造二维码生成新利器M.Talen
    项目介绍QRcodeGen(二维码生成器)是一个使用 Python 的 Tkinter 库开发的二维码生成器应用程序。它允许用户输入文本或链接,然后生成相应的二维码。功能生成二维码:用户输入文本或链接后,点击“生成”按钮,程序会生成一个二维码,并在预览区域显示。保存二维码:生成二维码后,用户可以点击“保存”按钮将二维码保存为 PNG 图像文件。颜色选择:用户可以通过“设置”按钮打开设置窗口,在设置窗口中选择二维码的颜色和背景颜色。设置保存路径:在设置窗口中,用户可以设置二维码的默认保存路径。技术实现使用qrcode库生成二维码。使用Tkinter库创建图形用户界面,包括输入框、按钮、标签和预览区域等。使用colorchooser模块实现颜色选择功能。使用os模块检查和创建保存二维码的文件夹。使用requests和PIL库获取和处理程序图标。截图展示2024/10/13 版本开源仓库欢迎对该项目贡献代码,提交 Pull Requests 或报告问题。GitHub:https://github.com/talen8/QRcodeGenGitee:https://gitee.com/tale
     

QRcodeGen项目介绍,基于Python打造二维码生成新利器

作者 M.Talen
2024年10月23日 21:49

项目介绍

QRcodeGen(二维码生成器)是一个使用 Python 的 Tkinter 库开发的二维码生成器应用程序。它允许用户输入文本或链接,然后生成相应的二维码。

功能

  • 生成二维码:用户输入文本或链接后,点击“生成”按钮,程序会生成一个二维码,并在预览区域显示。
  • 保存二维码:生成二维码后,用户可以点击“保存”按钮将二维码保存为 PNG 图像文件。
  • 颜色选择:用户可以通过“设置”按钮打开设置窗口,在设置窗口中选择二维码的颜色和背景颜色。
  • 设置保存路径:在设置窗口中,用户可以设置二维码的默认保存路径。

技术实现

  1. 使用qrcode库生成二维码。
  2. 使用Tkinter库创建图形用户界面,包括输入框、按钮、标签和预览区域等。
  3. 使用colorchooser模块实现颜色选择功能。
  4. 使用os模块检查和创建保存二维码的文件夹。
  5. 使用requestsPIL库获取和处理程序图标。

截图展示

2024/10/13 版本

image-20241023213928754

image-20241023213957544

开源仓库

欢迎对该项目贡献代码,提交 Pull Requests 或报告问题。

GitHub:https://github.com/talen8/QRcodeGen

Gitee:https://gitee.com/talen2004/QRcodeGen

更新日志

2024/10/13

经过数日开发及测试,项目正式上线,参考项目文档教程即可上手体验使用。

  • ✇新锐博客
  • python项目关闭终端照样运行的方法莫忘
    前言 因为想使用一个python项目,所以经历了以下事件并且成功部署好了项目 过程 首先项目就两件事一个是安装环境,另一个就是启动python脚本。 但是呢当我用pip install -r requirements.txt 安装环境的时候,提示pip不存在,突然想到之前遇到过这种情况是版本不对,于是将pip改为pip3就行了。 安装好后就是需要启动python脚本了,于是我就用finalshell连接了服务器,用CD到目录,然后同样的将python改为python3执行了python脚本。 虽然脚本运行起来了,但是我发现只要我关闭了终端,任务好像就停止了。 于是我就百度如何关闭终端不停止任务,最后发现了一个方法。 使用nohup python3 your_script.py & 这个命令就好了。 这样哪怕关闭终端也可以运行了。
     

python项目关闭终端照样运行的方法

作者 莫忘
2024年10月17日 02:29

前言

因为想使用一个python项目,所以经历了以下事件并且成功部署好了项目

过程

首先项目就两件事一个是安装环境,另一个就是启动python脚本。

但是呢当我用pip install -r requirements.txt 安装环境的时候,提示pip不存在,突然想到之前遇到过这种情况是版本不对,于是将pip改为pip3就行了。

安装好后就是需要启动python脚本了,于是我就用finalshell连接了服务器,用CD到目录,然后同样的将python改为python3执行了python脚本。

虽然脚本运行起来了,但是我发现只要我关闭了终端,任务好像就停止了。

于是我就百度如何关闭终端不停止任务,最后发现了一个方法。

使用nohup python3 your_script.py & 这个命令就好了。

这样哪怕关闭终端也可以运行了。

  • ✇爱吃猫的鱼BLOG
  • Python unittest 框架,强大的测试利器M.Talen
    1 前言单元测试是软件开发中的重要环节,它是对软件中最小可测试单元进行检查和验证的过程。对于单元测试中单元的含义,一般要根据实际情况判定,如在 C 语言中单元指一个函数,在 Java 里单元指一个类,在图形化软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。unittest 框架作为 Python 强大的单元测试工具,在软件测试中发挥着重要作用。其核心优势主要体现在以下几个方面:内置于 Python 标准库:作为 Python 标准库的一部分,unittest 框架无需额外安装即可使用,降低了项目的依赖成本。丰富的功能特性:框架提供了丰富的断言方法、测试用例组织方式、测试运行器等功能特性,满足了开发者多样化的测试需求。良好的兼容性与扩展性:unittest 框架与其他 Python 测试工具和库兼容良好,同时也支持开发者根据需要进行定制和扩展。2 核心概念Test Case(测试用例)一个 TestCase 的实例就是一个测试用例,它是 unittest 框架中的基本单元。测试用例的方法必须以 test 开头,这样 unittest 框架才能识别并执行这
     

Python unittest 框架,强大的测试利器

作者 M.Talen
2024年9月20日 00:20

1 前言

单元测试是软件开发中的重要环节,它是对软件中最小可测试单元进行检查和验证的过程。对于单元测试中单元的含义,一般要根据实际情况判定,如在 C 语言中单元指一个函数,在 Java 里单元指一个类,在图形化软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。

unittest 框架作为 Python 强大的单元测试工具,在软件测试中发挥着重要作用。其核心优势主要体现在以下几个方面:

  • 内置于 Python 标准库:作为 Python 标准库的一部分,unittest 框架无需额外安装即可使用,降低了项目的依赖成本。
  • 丰富的功能特性:框架提供了丰富的断言方法、测试用例组织方式、测试运行器等功能特性,满足了开发者多样化的测试需求。
  • 良好的兼容性与扩展性:unittest 框架与其他 Python 测试工具和库兼容良好,同时也支持开发者根据需要进行定制和扩展。

2 核心概念

  • Test Case(测试用例)

一个 TestCase 的实例就是一个测试用例,它是 unittest 框架中的基本单元。测试用例的方法必须以 test 开头,这样 unittest 框架才能识别并执行这些方法。

测试用例的执行顺序是按照方法名的 ASCII 值进行排序的,而不是按照书写的顺序。这意味着如果想要控制测试用例的执行顺序,不能仅仅依靠书写的先后顺序,需要通过合理命名方法名来实现。

在测试用例中,断言方法是判断被测对象行为是否符合预期的关键。例如,可以使用assertEqual()断言两个值是否相等,assertTrue()断言一个表达式是否为真,assertFalse()断言一个表达式是否为假等。如果断言失败,测试框架会抛出一个异常,表明测试用例未通过。

  • Test Suite(测试套件)

测试套件是将多个测试用例集合在一起执行的工具。它可以将不同的测试用例组织起来,形成一个更大的测试集合,方便进行批量测试。

可以通过多种方式构建测试套件。例如,可以使用unittest.TestSuite()实例化一个测试套件对象,然后通过addTest()方法逐个添加测试用例。也可以使用unittest.makeSuite()方法,根据一个测试类批量创建测试用例并添加到测试套件中。

测试套件还可以嵌套,即一个测试套件可以包含其他测试套件,这样可以更加灵活地组织测试用例。

  • Test Runner(测试运行器)

测试运行器是用来执行测试用例并返回执行结果的工具。它可以配合测试套件一起使用,执行测试套件中的所有测试用例,并将测试结果保存到TextTestResult实例中。

unittest.TextTestRunner()是一个常用的测试运行器,它提供了多种运行测试用例的方法。可以设置不同的参数来控制测试结果的显示详细程度,例如verbosity参数可以设置为 0、1 或 2,分别对应静默模式、默认模式和详细模式。

在详细模式下,测试运行器会显示每个测试用例的所有相关信息,包括测试用例的名称、执行结果、错误信息等,这对于调试和分析测试结果非常有帮助。

  • Test Fixture(测试夹具)

测试夹具在单元测试中起着至关重要的作用。它主要负责为测试用例提供一个稳定、一致的测试环境,包括环境搭建(setUp)和销毁(tearDown)。

setUptearDown方法可以在不同的级别生效。比如,在方法级别,setUp(self)会在每个测试方法执行前自动执行,用于准备测试数据和环境;tearDown(self)则在每个测试方法执行后自动执行,用于清理测试数据和环境。例如在测试数据库操作时,setUp可以建立数据库连接,准备测试数据,而tearDown可以关闭数据库连接,清理测试过程中产生的数据。在类级别,@classmethod装饰的setUpClass(cls)在每个测试类里,执行一次,在所有用例运行前执行;tearDownClass(cls)同样在每个测试类里,执行一次,在所有用例运行后执行。这对于一些需要在类级别进行初始化和清理的操作非常有用,比如创建和销毁一个复杂的对象实例。在模块级别,setUpModule()在每个模块里,执行一次,在所有用例运行前执行;tearDownModule()在每个模块里,执行一次,在所有用例运行后执行。可以用于一些全局的初始化和清理操作,比如初始化日志系统等。

通过这些不同级别的测试夹具,可以为每个测试用例、测试类或测试模块提供干净的测试环境,确保测试结果的准确性和可靠性。

3 用例编写与执行

3.1 编写测试用例

编写测试用例是使用 unittest 框架进行单元测试的关键步骤。以下是编写测试用例的一般步骤:

1. 导入模块

首先,需要导入 unittest 模块以及要测试的模块。例如,如果要测试一个名为my_module的模块,可以使用以下代码导入:

1
2
import unittest
from my_module import *

2. 创建测试类

创建一个测试类,该类继承自unittest.TestCase。测试类的名称应该能够清晰地表明它所测试的模块或功能。例如:

1
2
class MyTest(unittest.TestCase):
...

3. 定义测试方法

在测试类中,定义测试方法。测试方法的名称必须以test_开头,这样 unittest 框架才能识别它们为测试方法。例如:

1
2
3
def test_functionality(self):
result = add(2, 3)
self.assertEqual(result, 5)

def test_functionality(self):定义了一个测试方法。在这个方法中,可以编写具体的测试逻辑,包括调用被测试的函数或方法,使用断言方法验证结果是否符合预期。例如被测试的函数是 add,可以使用result = add(2, 3)测试方法,然后使用断言方法self.assertEqual(result, 5)来验证结果是否为 5。

4. 调用 main 方法运行测试用例

在测试模块的底部,可以使用unittest.main()方法来运行所有的测试用例,这个方法会自动发现并执行所有以test_开头的测试方法。例如:

1
2
if __name__ == '__main__':
unittest.main()

3.2 用例执行方式

1. 自动发现和执行测试用例

unittest 提供了一种自动发现测试用例的机制。默认情况下,它会在当前目录下查找以test开头的 Python 文件,并将其中以test_开头的方法识别为测试用例。

可以通过命令行参数来指定特定的目录进行测试用例的自动发现。例如,使用python -m unittest discover -s /path/to/directory命令可以在指定目录下查找测试用例并执行。

2. 执行指定用例

指定测试模块:可以通过命令行参数指定要执行的测试模块。例如,运行python -m unittest test_module命令,将会执行名为test_module的模块中的所有测试用例。

指定测试类:可以进一步指定要执行的测试类。例如,运行python -m unittest test_module.TestClass命令,将会执行test_module模块中的TestClass类中的所有测试用例。

指定测试方法:还可以指定要执行的具体测试方法。例如,运行python -m unittest test_module.TestClass.test_method命令,将会执行test_module模块中的TestClass类中的test_method方法。

指定文件路径:除了使用模块和类名,也可以直接指定测试文件的路径来执行其中的测试用例。例如,运行python -m unittest /path/to/test_file.py命令,将会执行指定文件中的所有测试用例。

4 实例展示

4.1 用于测试的类

以下是一个用于测试的简单类示例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Calculator:
def add(self, a, b):
return a + b

def subtract(self, a, b):
return a - b

def multiply(self, a, b):
return a * b

def divide(self, a, b):
if b == 0:
raise ValueError("除数不能为零")
return a / b

这个类Calculator包含了四个基本的数学运算方法:加法、减法、乘法和除法。

4.2 测试用例

以下是使用 unittest 框架对Calculator类进行测试的测试用例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import unittest
from calculator import Calculator

class TestCalculator(unittest.TestCase):
def setUp(self):
self.calculator = Calculator()

def test_add(self):
result = self.calculator.add(5, 3)
self.assertEqual(result, 8)

def test_subtract(self):
result = self.calculator.subtract(8, 3)
self.assertEqual(result, 5)

def test_multiply(self):
result = self.calculator.multiply(4, 3)
self.assertEqual(result, 12)

def test_divide(self):
result = self.calculator.divide(10, 2)
self.assertEqual(result, 5)

with self.assertRaises(ValueError):
self.calculator.divide(10, 0)

if __name__ == '__main__':
unittest.main()

在这个测试用例中,首先创建了一个TestCalculator类,它继承自unittest.TestCase。在setUp方法中,创建了一个Calculator的实例,以便在每个测试方法中使用。

test_add方法测试了加法运算,调用Calculator类的add方法并使用断言self.assertEqual来验证结果是否为预期值;test_subtract方法测试减法运算,同理使用断言验证结果;test_multiply方法测试乘法运算;test_divide方法测试除法运算,分为两种情况:正常情况下验证结果是否正确;当除数为零时,使用self.assertRaises来验证是否抛出了 ValueError 异常。

4.3 详细解释

1. 测试用例结构

每个测试方法都以test_开头,这是 unittest 框架的要求,以便框架能够自动识别并执行这些方法。

在每个测试方法中,首先调用被测试的方法,然后使用断言来验证结果是否符合预期。

2. 断言的使用

self.assertEqual用于验证两个值是否相等。在加法、减法、乘法和除法的正常测试中,使用这个断言来验证计算结果是否正确。

self.assertRaises用于验证是否抛出了特定的异常。在除法测试中,当除数为零时,应该抛出ValueError异常,使用这个断言来验证这一行为。

3. setUp方法的作用

setUp方法在每个测试方法执行之前都会被调用,用于设置测试环境。在这个例子中,创建了一个Calculator的实例,以便在每个测试方法中都可以使用这个实例进行测试。

4.4 特别注意

1. 测试方法的独立性

每个测试方法应该是独立的,不应该依赖于其他测试方法的执行顺序或结果。这可以确保即使某个测试方法失败,其他测试方法仍然可以正常执行,并且便于定位问题。

2. 异常处理的测试

对于可能抛出异常的代码,应该进行异常处理的测试。在这个例子中,对除法运算中除数为零的情况进行了异常测试,确保代码在出现异常情况时能够正确处理。

3. 测试用例的全面性

测试用例应该尽可能覆盖各种可能的情况,包括正常情况和边界情况。例如,对于加法运算,可以测试正数、负数、零等不同的输入情况;对于除法运算,可以测试除数为正数、负数、零等情况。

4. 测试用例的可读性

测试用例的代码应该具有良好的可读性,以便其他开发人员能够理解测试的目的和方法。可以使用有意义的测试方法名称和注释来提高测试用例的可读性。

5 写在最后

unittest 框架在 Python 项目中具有至关重要的地位。它在提高代码质量方面表现出色,通过提供丰富的断言方法和严格的测试流程,能够及时发现代码中的潜在问题,确保代码的正确性和稳定性。在测试管理方面,unittest 框架提供了多种方式来组织和执行测试用例。测试套件可以将多个测试用例或测试类集中起来执行,方便管理大量的测试用例。同时,测试运行器可以生成详细的测试报告,帮助开发者快速了解测试结果,定位问题。此外,框架中的测试固件功能,如setUptearDown方法,使得测试环境的搭建和销毁更加方便,提高了测试的可重复性和可维护性。unittest 框架作为 Python 内置的单元测试框架,具有广泛的应用前景。在持续集成和持续部署(CI/CD)流程中,unittest 框架可以与其他工具结合使用,实现自动化测试,确保每次代码提交后都能进行全面的测试,及时发现问题并进行修复。在大型项目中,unittest 框架可以帮助开发者更好地管理和维护测试用例,提高开发效率和代码质量。此外,unittest 框架还具有良好的可扩展性。开发者可以根据项目的需求,自定义测试用例和测试套件,实现更加复杂的测试场景。同时,框架也可以与其他测试工具和框架结合使用,发挥各自的优势,共同提高软件测试的效率和质量。

总之,unittest 框架在 Python 项目中具有重要的优势和广阔的应用前景,是提高代码质量、保证软件稳定性的重要工具。

  • ✇新锐博客
  • Linux一键安装Python3.11.2莫忘
    前言 生产过程中难免会用到python,但是linux自带的python好像是2.7.5的,有点落后了,所以今天教大家怎么在linux服务器中安装python3.11.2 教程 首先随便在一个目录下创建一个文件夹,并且上传python3.11.2的安装包然后输入以下命令 tar zxvf python-3.11.2.tgz 在python-3.11.2 目录下创建一个文件,命名为python311_install.sh ,并将以下代码放入其中 #!/bin/bash # You should have Internet connection. # You should have Online yum resource, if you don't have Online yum resource, Please use below function online_yumresource() { curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
     

Linux一键安装Python3.11.2

作者 莫忘
2024年2月11日 23:09

前言

生产过程中难免会用到python,但是linux自带的python好像是2.7.5的,有点落后了,所以今天教大家怎么在linux服务器中安装python3.11.2

教程

首先随便在一个目录下创建一个文件夹,并且上传python3.11.2的安装包然后输入以下命令

tar zxvf python-3.11.2.tgz

python-3.11.2 目录下创建一个文件,命名为python311_install.sh ,并将以下代码放入其中

#!/bin/bash

# You should have Internet connection.
# You should have Online yum resource, if you don't have Online yum resource, Please use below

function online_yumresource() {
    curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
    curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
}

function py311_install() {
    yum -y groupinstall "Development tools"
    yum install -y ncurses-devel gdbm-devel xz-devel sqlite-devel tk-devel uuid-devel readline-devel bzip2-devel libffi-devel
    yum install -y openssl-devel openssl11 openssl11-devel
    yum install centos-release-scl
    yum -y install devtoolset-8
    source /opt/rh/devtoolset-8/enable
    echo "source /opt/rh/devtoolset-8/enable" >> /etc/profile
    gcc --version

    export CFLAGS=$(pkg-config --cflags openssl11)
    export LDFLAGS=$(pkg-config --libs openssl11)
    tar zxvf Python-3.11.2.tgz
    cd Python-3.11.2
    ./configure --enable-optimizations
    make && make altinstall
    ln -sf /usr/local/bin/python3.11 /usr/bin/python3
    ln -sf /usr/local/bin/pip3.11  /usr/bin/pip3

    # Create a virtual environment and activate it
    python3.11 -m venv myenv
    source myenv/bin/activate

    # Upgrade pip and install other packages
    pip install --upgrade pip
    pip install numpy pandas matplotlib
}

online_yumresource
py311_install

然后再在终端中输入如下命令

cd python-3.11.2 && sh python311_install.sh

结语

可以在终端中输入python3 --version ,如果显示python 3.11.2 就说明安装成功了。

教程到此结束

❌
❌