shutil_module

本文介绍了两种文件复制的方法:一是使用copyfileobj函数逐字节复制文件内容;二是使用copyfile函数进行整体复制,无需手动打开文件。这两种方法适用于不同场景。

1.copyfileeobj,将文件中的内容拷贝至另一个文件中。

import shutil
f1 = open("本节笔记",encoding="utf-8")
f2 = open("笔记2","w",encoding="utf-8")
shutil.copyfileobj(f1,f2)
#这样就能把f1文件中的内容复制到f2文件中去

2.copyfile,复制文件,免打开。

import shutil
shutil.copyfile("笔记2","笔记3")
#这时候笔记2的内容就copy到了笔记三之中
#这跟copyfileobj的主要区别是,这个功能帮你打开了文件。

 

 

详情见:http://www.cnblogs.com/wupeiqi/articles/4963027.html

转载于:https://www.cnblogs.com/zaizaiaipython/p/7990194.html

golden_shield.py import os import shutil import traceback import functools import logging import time # 配置日志 logger = logging.getLogger("金钟罩") logger.setLevel(logging.INFO) BACKUP_DIR = "./.module_backups" # 模块备份存放目录 os.makedirs(BACKUP_DIR, exist_ok=True) def backup_module(module_path: str): """备份模块代码""" if not os.path.exists(module_path): logger.warning(f"无法备份,模块路径不存在:{module_path}") return base_name = os.path.basename(module_path) backup_path = os.path.join(BACKUP_DIR, f"{base_name}.bak") try: shutil.copy(module_path, backup_path) logger.info(f"[金钟罩] 模块已备份至:{backup_path}") except Exception as e: logger.error(f"[金钟罩] 备份失败:{e}") def rollback_module(module_path: str): """将模块代码回滚到上一个备份版本""" base_name = os.path.basename(module_path) backup_path = os.path.join(BACKUP_DIR, f"{base_name}.bak") if os.path.exists(backup_path): shutil.copy(backup_path, module_path) logger.warning(f"[金钟罩] 模块已回滚:{module_path}") else: logger.error(f"[金钟罩] 无法回滚,找不到备份:{backup_path}") def fix_with_ai(module_path: str, error_log: str): """占位:后期接入 GPT 自动修复逻辑""" logger.info(f"[金钟罩] 可调用 AI 修复模块:{module_path},错误如下:\n{error_log}") # TODO: 接入 GPT 调用 + 代码替换 return False # 当前不执行修复 def safe_run(module_path: str): """装饰器:安全运行模块,并在异常时备份 / 修复 / 回滚""" def decorator(func): @functools.wraps(func) def wrapper(*args, **kwargs): backup_module(module_path) try: return func(*args, **kwargs) except Exception as e: error_trace = traceback.format_exc() logger.error(f"[金钟罩] 模块运行异常:{e}") logger.error(error_trace) # 尝试修复(可选) success = fix_with_ai(module_path, error_trace) if not success: rollback_module(module_path) return None # 或自定义错误返回 return wrapper return decorator 使用示例 from golden_shield import safe_run MODULE_PATH = "modules/example_module.py" @safe_run(MODULE_PATH) def run_module(): import modules.example_module as mod mod.run() run_module() 🧩 后续可拓展: • fix_with_ai() → 接入你自己的 GPT 本地模型或 OpenAI API,自动生成修复代码 • 加入 TestRunner,执行修复后自动跑测试用例 • 多版本历史备份(.bak1, .bak2)管理 • 每次修复都记录在 .fixlog.json 里,形成自愈学习历史 模块运行异常 → 捕捉错误 → 调用 GPT 修复 → 写入新代码 → 自动运行验证 → 回滚失败
07-16
Traceback (most recent call last): File "/Users/ios/Downloads/linux_1/tools/server_manger_tool/build.py", line 124, in <module> setup( File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/cx_Freeze/__init__.py", line 66, in setup return setuptools.setup(**attrs) File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/setuptools/__init__.py", line 103, in setup return distutils.core.setup(**attrs) File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 184, in setup return run_commands(dist) File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 200, in run_commands dist.run_commands() File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/setuptools/dist.py", line 968, in run_command super().run_command(command) File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/build.py", line 132, in run self.run_command(cmd_name) File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/setuptools/_distutils/cmd.py", line 316, in run_command self.distribution.run_command(command) File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/setuptools/dist.py", line 968, in run_command super().run_command(command) File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/cx_Freeze/command/build_exe.py", line 298, in run freezer: Freezer = Freezer( File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/cx_Freeze/freezer.py", line 1128, in __init__ Freezer.__init__(self, *args, **kwargs) File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/cx_Freeze/freezer.py", line 175, in __init__ self.finder: ModuleFinder = self._get_module_finder() File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/cx_Freeze/freezer.py", line 422, in _get_module_finder finder.include_package(name) File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/cx_Freeze/finder.py", line 835, in include_package module = self._import_module(name, deferred_imports) File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/cx_Freeze/finder.py", line 275, in _import_module module = self._internal_import_module(name, deferred_imports) File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/cx_Freeze/finder.py", line 362, in _internal_import_module module = self._load_module( File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/cx_Freeze/finder.py", line 433, in _load_module self._load_module_code(module, loader, deferred_imports) File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/cx_Freeze/finder.py", line 472, in _load_module_code module.hook(self) File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/cx_Freeze/hooks/_pyqt5_/__init__.py", line 66, in load_pyqt5 copy_qt_files(finder, "PyQt5", "LibraryExecutablesPath", "qt.conf") File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/cx_Freeze/hooks/qthooks.py", line 156, in copy_qt_files for source_path, target_path in _get_qt_files(name, variable, arg): File "/Users/ios/PycharmProjects/pythonProject/.venv/lib/python3.9/site-packages/cx_Freeze/hooks/qthooks.py", line 133, in _get_qt_files if source_path.joinpath(arg).is_dir(): AttributeError: 'NoneType' object has no attribute 'joinpath'
07-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值