python 工具代码

发布时间:2024年01月11日

可以使用 Python 标准库中的 shutil 模块中的 copytree 函数来实现复制目录及其子目录中的所有文件。具体操作步骤如下:

import shutil

# 复制 src 目录及其子目录中的所有文件到 dst 目录中
shutil.copytree(src, dst)

其中,src 表示要复制的源目录,dst 表示要复制到的目标目录。copytree 函数会递归地复制 src 目录及其子目录中的所有文件到 dst 目录中。如果 dst 目录不存在,则会自动创建。

需要注意的是,如果目标目录已存在,则会抛出 FileExistsError 异常。如果要覆盖已存在的文件,可以设置 shutil.copytree 函数的 dirs_exist_ok 参数为 True,即:

shutil.copytree(src, dst, dirs_exist_ok=True)

这样即可覆盖已存在的文件。


可以使用 Python 的 psutil 库来获取系统进程信息,并通过查询端口号来判断是否需要杀死进程。以下是一个示例代码,可以杀死占用指定端口的应用程序:

import psutil

# 要杀死的端口号
port = 8080

# 获取所有进程列表
for proc in psutil.process_iter(['pid', 'name']):
    try:
        # 获取进程的端口信息
        conn_list = proc.connections()
        for conn in conn_list:
            if conn.laddr.port == port:
                # 如果进程的端口为指定端口号,则尝试杀死进程
                pid = proc.pid
                pname = proc.info['name']
                print(f"Killing process {pid} ({pname})")
                proc.kill()
    except (psutil.AccessDenied, psutil.NoSuchProcess):
        # 如果无法获取进程信息,则忽略该进程
        pass

以上示例代码使用 psutil.process_iter 函数获取系统中所有进程的信息,然后遍历所有进程,对于每个进程,获取其所有网络连接的信息,判断是否有端口号为指定端口的连接。如果找到了占用指定端口的连接,则尝试杀死该进程。需要注意的是,杀死进程需要管理员权限,否则可能会失败。

另外,需要注意的是,在杀死进程之前,一定要确认该进程是否是占用指定端口的应用程序,以免误杀其他进程导致系统不稳定。建议在执行代码前,先手动确认要杀死的进程是否正确,并备份系统数据以避免数据丢失。


可以使用 Python 的 os 模块和 shutil 模块来批量按指定规则重命名指定目录下的文件,并可以支持正则表达式。以下是一个示例代码:

import os
import re
import shutil

# 指定目录和文件名规则
dir_path = '/path/to/dir'
source_rule = r'(old_)(\d{3})(\.txt)'
target_rule = r'new_{0:03d}.txt'

# 遍历目录下的所有文件
for i, filename in enumerate(os.listdir(dir_path)):
    # 使用正则表达式匹配文件名
    match = re.match(source_rule, filename)
    if match:
        # 根据匹配结果构造新的文件名
        new_name = target_rule.format(int(match.group(2)))
        # 构造文件的完整路径
        old_path = os.path.join(dir_path, filename)
        new_path = os.path.join(dir_path, new_name)
        # 重命名文件
        shutil.move(old_path, new_path)

以上示例代码中,dir_path 表示要重命名文件的目录路径,source_rule 表示原始文件名的匹配规则,target_rule 表示新文件名的命名规则,其中 {0:03d} 表示使用 3 位数字编号。代码遍历目录下的所有文件,对于每个文件,使用 re.match 函数匹配原始文件名是否符合规则,如果符合,则根据新的命名规则构造新的文件名,然后使用 shutil.move 函数重命名文件。

需要注意的是,使用正则表达式时需要谨慎操作,确保规则正确,并备份系统数据以避免数据丢失。建议先在测试目录下执行代码,确认代码正确后再应用到实际目录。


可以使用 Python 的 os 模块和 shutil 模块来批量按指定规则重命名指定目录下(包括子目录)的文件,并可以支持正则表达式。以下是一个示例代码:

import os
import re
import shutil

# 指定目录和文件名规则
dir_path = '/path/to/dir'
source_rule = r'(old_)(\d{3})(\.txt)'
target_rule = r'new_{0:03d}.txt'

# 遍历目录和子目录下的所有文件
for root, dirs, files in os.walk(dir_path):
    for i, filename in enumerate(files):
        # 使用正则表达式匹配文件名
        match = re.match(source_rule, filename)
        if match:
            # 根据匹配结果构造新的文件名
            new_name = target_rule.format(int(match.group(2)))
            # 构造文件的完整路径
            old_path = os.path.join(root, filename)
            new_path = os.path.join(root, new_name)
            # 重命名文件
            shutil.move(old_path, new_path)

以上示例代码中,dir_path 表示要重命名文件的目录路径,source_rule 表示原始文件名的匹配规则,target_rule 表示新文件名的命名规则,其中 {0:03d} 表示使用 3 位数字编号。代码使用 os.walk 函数遍历目录和子目录下的所有文件,对于每个文件,使用 re.match 函数匹配原始文件名是否符合规则,如果符合,则根据新的命名规则构造新的文件名,然后使用 shutil.move 函数重命名文件。

需要注意的是,使用正则表达式时需要谨慎操作,确保规则正确,并备份系统数据以避免数据丢失。建议先在测试目录下执行代码,确认代码正确后再应用到实际目录。


文章来源:https://blog.csdn.net/sinat_41883985/article/details/135415699
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。