- 博客(550)
- 收藏
- 关注
原创 Python 的 subprocess.Popen 指定目录启动程序输出结果写入文件
标准输出(stdout)和标准错误(stderr):子进程的输出会被解码为文本,而不是字节流。标准输出(stdout)和标准错误(stderr):子进程的输出会被解码为文本,而不是字节流。标准输入(stdin):如果你向子进程发送文本数据,Python 会将其编码为字节流并传递给子进程的标准输入。的作用是在 Python 中使用文本模式处理标准输入、输出和错误流,使得处理文本数据更加方便。的作用是在 Python 中使用文本模式处理标准输入、输出和错误流,使得处理文本数据更加方便。
2024-03-27 11:07:44 722
原创 Python subprocess 模块poll() 函数、wait() 函数、terminate() 函数介绍
一、poll()一、poll()
2024-03-26 17:11:32 408
原创 python修改txt文件指定行内容
在这个示例中,我们首先读取了文件的所有行内容,然后修改了第三行(索引为2)的内容为 "New content for line 3",最后将修改后的内容写回到文件中。
2024-03-22 10:49:06 172
原创 python实现 linux 执行命令./test启动进程,进程运行中,输入参数s, 再输入参数1, 再输入参数exit, 获取进程运行结果重定向写入到文件
在这段代码中,我们使用 `subprocess.Popen` 来启动 `./test` 进程,并使用 `stdin.write` 方法向进程输入参数,通过 `stdin.flush` 确保输入被发送到进程。要在 Python 中实现执行 `./test` 启动进程,并在进程运行中依次输入参数 `s`、`1`,最后输入参数 `exit`,并将进程的输出结果重定向写入到文件,你可以使用 `subprocess` 模块。你可以直接执行这段代码来实现输入参数、控制进程功能,并将进程的输出结果写入到文件中。
2024-03-21 18:52:41 358
原创 Python测试框架Hypothesis 常用函数、方法
Hypothesis 是一个基于属性的测试框架,提供了各种函数和方法来帮助生成测试数据、定义属性和执行测试。
2024-03-21 17:14:30 294
原创 Python基于属性的测试库Hypothesis 介绍和使用
测试用例中我们定义了两个随机浮点数作为输入,并使用 `assert` 语句验证了被测函数 `divide` 的行为是否满足属性(即除法的逆运算)。在 Python 中,Hypothesis 是一个基于属性的测试库,它用于支持测试驱动开发(TDD)和属性-based testing。它提供了丰富的数据生成策略,使得测试用例可以覆盖更广泛的输入空间,从而提高测试的质量和全面性。通过这种方式,Hypothesis 将自动生成大量的随机测试数据,并运行测试函数,以便发现潜在的 bug 或异常情况。
2024-03-21 16:44:42 357
原创 Python生成器模式
在 Python 中,生成器模式的实现原理主要基于生成器函数和迭代器协议。生成器函数是一种特殊的函数,它可以在需要时生成值并保持函数的执行状态,从而能够动态生成数据序列。生成器函数使用yield关键字来产生值,每次调用生成器函数时会返回一个生成器对象。
2024-03-20 10:59:39 538
原创 Linux普通用户,上传文件为何必须选择普通用户所在目录
这是出于安全性考虑的一种限制,目的是确保用户无法随意修改系统文件或其他用户的文件。当一个普通用户登录时,其当前工作目录通常是其家目录,因此上传文件时会默认保存到当前工作目录,即普通用户所在目录。如果想要上传文件到其他目录,需要确保该目录对应的权限允许该用户进行写操作,否则会受到权限拒绝的错误。在 Linux 中,超级用户(root 用户)可以在系统的任何目录进行写操作,因为超级用户拥有最高权限。但对于普通用户来说,上传文件必须选择普通用户所在目录或有相应权限的目录进行操作,以遵守文件系统权限的规则。
2024-03-19 11:37:17 168
原创 Python使用Scapy库修改pcap包MAC地址
此外,如果你需要更直观的工具来修改pcap包中的MAC地址,你也可以考虑使用Wireshark这样的网络协议分析器。请注意,修改pcap文件中的MAC地址可能会导致数据包在网络中不被正确处理,因为MAC地址是用于在网络层进行地址解析的。在修改MAC地址后,你可能需要重新计算数据包的校验和或进行其他必要的调整,以确保数据包在网络中的正确传输。脚本将读取原始pcap文件,修改每个数据包的MAC地址,并将修改后的数据包保存到一个新的pcap文件中。替换为你要修改的原始pcap文件的路径,将。"新的源MAC地址"
2024-03-18 17:05:42 362
原创 Python尝试循环连接服务器,如果连接成功则退出,如果超过3次连接失败则退出
下面是一个使用Python实现的程序,可以实现你描述的功能:通过SSH连接服务器并重启服务器,然后循环尝试连接服务器,如果连接成功则退出,如果超过3次连接失败则退出。在这个示例中,我们首先通过SSH连接服务器并重启服务器,然后循环尝试连接服务器。首先,请确保你已经安装了`paramiko`库,它是一个用于SSH连接的Python库。- `your_server_hostname_or_ip`:目标服务器的主机名或IP地址。- `your_password`:SSH连接使用的密码。
2024-03-14 15:33:34 368
原创 python 使用rsplit从右边开始分割2次,截取最后2部分以外的内容使用斜杠连接起来
在这个示例中,`rsplit()` 方法按照 `/` 进行分割,然后我们选择除了最后两个部分以外的部分并用 `/` 连接起来,得到想要的结果。要截取字符串中最后两个斜杠之前的内容,你可以使用 Python 的字符串分割和切片功能。
2024-03-14 10:11:47 107
原创 Python使用openpyxl库或pandas库创建.xlsx格式的Excel文件,并向文件不同的sheet按行或按列写入内容
【代码】Python使用openpyxl库或pandas库创建.xlsx格式的Excel文件,并向文件不同的sheet按行或按列写入内容。
2024-03-13 14:52:31 604
原创 Linux命令grep -A 9999 “指定字符串“ 文件名 | sed -n ‘/指定字符串/,$p‘ > 新文件名。查找包含指定字符串的行,并将该行之后的内容保存到另一个文件中
这个命令的作用是先用`grep`找到包含指定字符串的行以及其后的所有内容(`-A 9999`表示匹配行及其后的最大行数),然后通过`sed`命令进行进一步处理,只输出从匹配行到末尾的内容,并将其保存到新文件中。要在Linux中查找包含指定字符串的行,并将该行之后的内容保存到另一个文件中,你可以使用`grep`命令结合`-A`选项和`sed`命令来实现。grep -A 9999 "指定字符串" example.txt | sed -n '/指定字符串/,$p' > output.txt。
2024-03-12 15:25:33 136
原创 Python使用int()函数将十六进制数转换为十进制数
在Python中,可以使用int()函数将十六进制数转换为十进制数。这段代码首先将十六进制数1f4表示为字符串"1f4",然后使用int()函数将其转换为十进制数,结果为500。print(decimal_number) # 输出为500。
2024-03-12 11:35:18 591
原创 Alveo U200 和 U250 数据中心加速器卡硬件原理图
在 U200 中,PCIe 接口用于与主机系统通信,以便通过 PCIe 总线与 FPGA 进行数据交换和控制。在 U200 中,DDR 用于存储 FPGA 运行时所需的数据和程序等。闪存:闪存是一种非易失性存储器,用于存储 FPGA 的配置文件和其它的固件。在 U200 中,闪存用于存储 FPGA 的逻辑配置文件,以便在开机时加载并初始化 FPGA。维护端口:维护端口是一种特殊的串行通信接口,用于与 U200 进行调试和配置。时钟:U200 中包含多个时钟源,用于为 FPGA 和其他器件提供时钟信号。
2024-03-08 15:15:39 512
原创 Linux命令 执行后再输入 y, 或 password 等多个参数 的组合命令
echo "password")` 创建一个子 shell,在其中依次执行 `echo "y"` 和 `echo "password"`,将它们的输出合并起来。要在执行 Linux 命令后输入多个参数,比如 "y"、密码等,您可以结合使用 `echo`、`printf`、Here Document、管道和重定向等技巧来实现。如果需要输入多个参数,只需在命令序列中添加相应的 `echo` 或 `printf` 命令即可。- `echo "y"` 用于输出 "y"。
2024-03-08 09:40:10 129
原创 操作系统-进程
进程模型是操作系统中用于管理和执行进程的一种抽象概念。它描述了操作系统是如何组织和控制进程的,以及进程之间的关系和调度方式。在单任务模型中,操作系统一次只能执行一个进程,进程执行完毕后才能运行下一个进程。这种模型通常用于早期的操作系统,如单用户的DOS系统。多任务模型允许操作系统同时执行多个进程,通过时间片轮转或优先级调度等方式来实现进程间的切换和调度。现代操作系统如Windows、Linux等都采用多任务模型。并发模型强调多个进程同时执行,但不一定要求同时处理多个任务。
2024-03-06 14:49:45 820
原创 Intel网卡
支持虚拟化相关的技术,如SR-IOV(Single Root I/O Virtualization)和VMDq(Virtual Machine Device Queues),以提高在虚拟化环境下的性能和管理效率。:支持不同的以太网速率,如千兆以太网(Gigabit Ethernet)、万兆以太网(10 Gigabit Ethernet)甚至更高速率,或者无线网络速率(如Wi-Fi 6)。Intel的不同配置网卡可能会支持各种不同的功能,具体功能取决于网卡型号和规格。
2024-03-01 17:53:31 272
原创 操作系统-多核原理
传统的单核系统可能使用抢占式调度,但在多核系统中可能需要更复杂的调度算法,如将任务分配到不同的核心上,避免核心间的竞争和资源争夺。在多核系统中,需要使用适当的算法和数据结构来实现高效的信号量,以确保在多核并发访问时能够正确地进行信号量的增减操作。多核系统中,各个核心需要进行数据共享和通信,因此操作系统需要提供高效的通信机制和共享数据的管理,以确保不同核心间的数据一致性和可靠性。操作系统需要优化针对多核处理器的并发性能,例如通过并行化和线程级别的优化来充分利用多核处理器的计算能力,以提高系统的整体性能。
2024-03-01 10:45:38 623
原创 操作系统-输入输出(I/O)原理
通过复合 I/O,可以将多个独立的 I/O 操作组合成一个更大的操作单元,从而减少系统调用的次数,提高系统的性能和效率。通过可编程I/O,用户可以使用编程语言(如C、Python等)对I/O设备进行配置、控制和管理,从而实现更灵活、定制化的I/O操作。专有通道I/O是一种高级的输入输出技术,它通过专门的通道(Channel)来管理和执行I/O操作,提供了更高的性能、可靠性和扩展性。软件I/O层是指计算机系统中处理输入输出操作的软件部分,包括操作系统提供的I/O管理功能和应用程序使用的I/O接口。
2024-02-29 11:46:36 513
原创 Python 使用 MyHDL库 实现FPGA板卡仿真验证
编写 MyHDL 硬件描述:使用 MyHDL 库编写 FPGA 项目的硬件描述,包括顶层模块、信号连接等。编写仿真测试:使用 Python 编写仿真测试脚本,利用 MyHDL 提供的仿真功能对硬件描述进行仿真验证。运行仿真:运行仿真测试脚本,检查功能是否符合预期。
2024-02-28 17:13:13 316
原创 Python 使用 仿真框架cocotb 实现FPGA板卡仿真验证
要使用 Python 结合仿真框架 Cocotb(Co-simulation COrner TestBench)实现 FPGA 板卡的仿真验证,您可以利用 Cocotb 提供的功能来编写测试台和仿真环境,与 Verilog/VHDL 设计进行交互并进行仿真验证。2. **编写 Cocotb 测试脚本**:使用 Python 结合 Cocotb 编写测试脚本,与 Verilog/VHDL 设计进行交互,并定义测试场景和预期结果。通过上述步骤,您可以使用 Cocotb 框架实现 FPGA 设计的仿真验证。
2024-02-28 17:09:53 315
原创 Python 使用 PyRTL库 实现FPGA板卡仿真验证
要使用 Python 结合 PyRTL 库实现 FPGA 板卡的仿真验证,您可以利用 PyRTL 提供的硬件描述语言和仿真功能来进行 FPGA 设计的验证。1. **编写 PyRTL 硬件描述**:使用 PyRTL 库编写 FPGA 项目的硬件描述,包括顶层模块、信号连接等。2. **编写测试脚本**:使用 Python 编写测试脚本,利用 PyRTL 提供的仿真功能对硬件描述进行仿真验证。3. **仿真验证**:运行测试脚本,对硬件描述进行仿真验证,检查功能是否符合预期。Python 测试脚本。
2024-02-28 17:06:45 318
原创 Python使用HDL 模拟器实现 FPGA 板卡的仿真验证
2. **编写测试脚本**:使用 Python 编写测试脚本,通过调用 Verilog 模拟器对 Verilog 设计进行仿真,并生成仿真波形。1. **编写 Verilog 设计**:首先,您需要编写 FPGA 项目所需的 Verilog 设计代码,包括顶层模块、IP 核等。4. **与 FPGA 开发工具集成**:将验证通过的 Verilog 设计加载到 FPGA 开发工具中进行综合、布局和调试。3. **仿真验证**:运行测试脚本,对 Verilog 设计进行仿真验证,检查功能是否符合预期。
2024-02-28 17:00:20 322
原创 Python实现FPGA板卡仿真验证方法
有一些商业和开源的HDL模拟器提供了Python接口或支持Python脚本控制,可以通过Python来调用模拟器进行仿真。:cocotb是一个基于Python的仿真框架,用于对HDL设计进行仿真和验证。通过cocotb,可以在Python中编写仿真测试用例,并与Verilog或VHDL代码进行交互,实现仿真和验证功能。:MyHDL是一个Python库,用于将Python代码转换为Verilog或VHDL代码,并进行仿真。通过MyHDL,可以在Python中编写硬件描述代码,并进行仿真验证。
2024-02-28 16:55:19 469
原创 操作系统-文件原理
文件系统是计算机操作系统中用于管理存储设备上的文件和目录的一种机制。它定义了文件和目录的存储方式、组织结构以及对其进行访问和管理的规则和方法。文件系统负责将存储设备的物理存储空间抽象成逻辑上的文件和目录,使用户和程序能够方便地对数据进行读取、写入、删除和管理。文件系统的主要功能包括:文件和目录的创建、删除、读取、写入、重命名、权限控制、数据保护、磁盘空间管理等。文件系统还负责处理文件的逻辑组织、存储空间的分配和回收、文件的元数据维护(如文件属性、时间戳等),以及处理文件系统的错误和恢复。
2024-02-28 11:45:15 864
原创 操作系统-内存管理
内存抖动通常发生在系统内存不足时,导致操作系统频繁地将页面从物理内存中换出到磁盘(页面置换),而后又需要将其重新调入内存,这样频繁的置换操作会消耗大量的计算资源和时间,影响系统的性能。通常,操作系统会被加载到计算机的物理内存中,并占用一定的地址空间。通过这种方式,双向链表可以根据页面的访问顺序进行排序,最近访问的页面始终位于链表的头部,而最久未使用的页面位于链表的尾部。内存管理是操作系统中一个非常重要的功能,它主要负责管理计算机系统中的内存资源,包括内存的分配、回收、保护和共享等。
2024-02-27 11:23:35 989
原创 操作系统-线程原理
线程是操作系统中最小的执行单位,它是进程中的一个执行流程。一个进程可以包含多个线程,这些线程可以同时执行不同的任务。线程的特点包括:轻量级:线程比进程更轻量,创建和切换线程的开销相对较小。共享资源:线程之间共享进程的资源,包括内存空间、文件句柄等。并发执行:线程可以并发执行,从而提高程序的执行效率。线程可以分为内核线程和用户线程:内核线程:由操作系统内核创建和管理,它们是在内核空间中运行的。用户线程:由用户程序创建和管理,它们是在用户空间中运行的。用户线程依赖于内核线程的支持。
2024-02-26 11:27:37 609
原创 操作系统-进程原理
当一个程序的时间片用完后,操作系统会将当前的进程挂起,切换到下一个进程,并保存当前进程的信息,以便后续恢复执行。管道(Pipe)是一种用于进程间通信的机制,它通过创建一个管道,将一个进程的输出连接到另一个进程的输入,从而实现它们之间的数据传输。内核空间进程表中的每个表项通常包含了进程的唯一标识符(如进程ID)、进程状态(如就绪、运行、阻塞)、进程优先级、CPU占用时间、进程所占用的内存等信息。总的来说,进程管理是操作系统的重要功能,通过创建、调度、同步和通信等机制,实现了多任务处理和进程间的协调与合作。
2024-02-23 16:42:33 615
原创 操作系统-基础原理
设备管理软件是操作系统的关键组成部分:设备驱动程序是操作系统与硬件设备之间的接口,它负责将操作系统的请求转化为设备能够理解和执行的命令。综上所述,人造学科的特点为我们学习操作系统提供了理论和实践的基础,帮助我们理解操作系统的设计和开发过程,掌握相关技术知识和应用能力,培养创新意识和解决问题的能力,并了解操作系统在社会和生活中的作用。编译器的优化技术和算法的进步,可以提高生成的代码的执行效率和性能,而操作系统的进步也可以为编译器提供更多的资源和功能接口,进一步提高软件的运行效率和可靠性。
2024-02-23 10:28:08 1002
原创 Linux命令:重复多次后台运行且不保存输出,查看命令对应的进程数量
在这个示例中,`your_command` 是你想要重复运行的命令。`> /dev/null 2>&1` 部分用于将命令的标准输出和标准错误输出重定向到 `/dev/null`,即丢弃输出,从而不保存命令的输出。要查看与该命令对应的进程数量,你可以使用 `pgrep` 命令来查找匹配进程的数量。要在后台重复运行 Linux 命令并查看对应的进程数量,你可以使用循环结构和后台运行符号 `&` 结合起来。通过执行上述循环,你可以将 `your_command` 命令重复运行 3 次,并且不保存输出。
2024-02-21 15:01:15 449
原创 Linux命令:pkill 强制终止进程
`-signal`:指定要发送给匹配进程的信号。请注意,`pkill` 命令是一种强制终止进程的方式,它会直接发送信号给匹配的进程,因此请谨慎使用,以免造成数据丢失或系统不稳定。`pkill` 是一个用于终止进程的 Linux 命令。它通过进程的名称或其他属性来查找并结束匹配的进程。- `-f`:强制匹配整个命令行,而不仅仅是进程的名称。其中,`pattern` 是用于匹配进程的模式。- `-u user`:限制匹配的进程为指定用户所属的进程。- `-e`:精确匹配整个命令行,而不考虑模式中的大小写。
2024-02-21 13:52:10 286
原创 python中yml文件值 value: 0135解析结果 93的原因分析
根据你提供的信息,你在解析一个 YAML 文件时遇到了问题。在 YAML 文件中,键值对中的值可以是字符串,整数,浮点数等类型,但在 Python 中,YAML 解析器会将这些值自动转换为适当的类型。这样,当解析 YAML 文件时,`value` 的值将会被识别为字符串类型,而不会被自动转换为整数。数据类型转换问题:在解析yml文件时,0135可能被误解为八进制数,对应的十进制值为93。
2024-02-19 11:16:16 143
原创 python使用工厂模式和策略模式实现读文件、分析内容功能
在上面的示例中,我们首先创建了一个 `AnalysisFactory` 类作为工厂模式的实现,根据不同的分析类型选择不同的分析策略。然后,我们定义了一个 `AnalysisStrategy` 基类以及两个具体的分析策略类 `WordCountStrategy` 和 `CharacterCountStrategy`,它们分别实现了对单词个数和字符个数的分析。最后,我们使用示例展示了如何使用 `FileAnalyzer` 类来对文件进行单词个数和字符个数的分析,并输出了分析结果。
2024-02-18 16:55:36 622
原创 Python高级属性访问使用方法
对象代理是一种将属性访问委托给另一个对象的技术,它可以用于实现属性的代理、属性的懒加载、属性的缓存等功能。Python高级属性访问的实现原理是通过特殊的方法和装饰器来实现对属性的访问和操作。这些高级属性访问方法可以让开发者在访问和操作属性时有更多的灵活性和控制权,可以根据实际需求自定义属性的行为。性能开销:由于高级属性访问涉及到方法的调用,可能会引入一定的性能开销,特别是在属性的访问和赋值频繁的情况下。属性计算:使用@property装饰器可以实现属性的计算逻辑,例如计算属性的平均值或格式化属性的输出。
2024-02-07 18:05:02 644
原创 Python访问超类中的方法 使用方法
函数来访问超类中的方法的实现原理是基于方法解析顺序(Method Resolution Order,简称MRO)。函数来访问超类中的方法可以提高代码的可读性和可维护性,但需要注意继承关系和MRO算法的特性。函数,我们可以在子类中访问超类中的属性和方法,并在需要的时候进行自定义或扩展。函数返回一个超类的对象,可以通过这个对象来调用超类中的方法。后,首先输出了父类中的打印语句,然后才输出了子类中的打印语句。函数,我们可以方便地访问父类中的方法,实现了代码的重用和扩展。方法,然后在子类中添加额外的打印语句。
2024-02-07 16:47:08 431
原创 Python子类化内置类型使用方法
注意,子类化内置类型并不是必须的,你可以直接使用内置类型提供的功能来完成你的任务。但是,如果你想要扩展内置类型的功能或者添加自己的定制行为,子类化内置类型是一个很有用的方式。总之,子类化内置类型是一种灵活的方式,可以根据需要扩展和定制内置类型的功能,并提供更具表达力和灵活性的代码。通过子类化,我们可以扩展和定制内置类型的功能,以满足特定的需求。使用子类化内置类型的好处是,我们可以在不破坏原有列表类型的基础上,扩展其功能。通过子类化内置列表类型,我们可以使用基类的方法和属性,并且还可以添加自己的方法和属性。
2024-02-07 16:35:17 463
原创 pytest+allure批量执行测试用例
可以看到,先执行 `setup_module` 的前置操作,然后依次执行每个测试用例的前置操作 `setup_function`,再依次执行每个测试用例,最后再依次执行每个测试用例的后置操作 `teardown_function`,最后执行 `setup_module` 的后置操作。在上述代码中,我们定义了两个前置操作 `setup_function` 和 `setup_module`,并用 `@pytest.fixture` 装饰器标记它们为用例级别的前置操作。
2024-02-05 16:45:24 2165
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人