可以使用 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
函数重命名文件。
需要注意的是,使用正则表达式时需要谨慎操作,确保规则正确,并备份系统数据以避免数据丢失。建议先在测试目录下执行代码,确认代码正确后再应用到实际目录。