-
苹果CMS一些数据处理记录
前几日因为删除了某一个分类,数据是已经删掉了,但是本地的图片数据还存在的,但是又不想把所有的图片全删了重建图片,于是想了个办法。 从数据库里把所有的封面图数据全部取出来,打印在一个txt文本里,然后跟图片目录下的图片文件做一个匹配筛选,如果不匹配则删除,这样就不会影响内容还在的图片内容。 使用的Python处理,直接把SQL下载到本地处理即可。 Python代码: import os import re import urllib.parse import configparser import argparse # 默认配置信息 DEFAULT_CONFIG = { 'SQL_FILE_PATH': 'f:\\code\\新建文件夹\\xxxx.sql', # SQL文件路径 'LOCAL_IMAGE_ROOT': 'f:\\code\\新建文件夹\\vod', # 本地图片根目录 'OUTPUT_TXT_PATH': 'f:\\code\\新建文件夹\\image_urls.txt', # 输出的TXT文件路径 'URL_DOMAIN': '123.com', # URL域名 'URL_PREFIX': 'mac://', # URL前缀 'URL_PATH_PREFIX': '/upload/vod/', # URL路径前缀 'LOCAL_PATH_PREFIX': '/vod' # 本地路径前缀 } # 全局配置变量 CONFIG = {} def load_config(config_file=None): """ 加载配置文件,如果配置文件不存在,则使用默认配置 """ global CONFIG CONFIG = DEFAULT_CONFIG.copy() if config_file and os.path.exists(config_file): try: parser = configparser.ConfigParser() parser.read(config_file, encoding='utf-8') if 'Settings' in parser: for key in DEFAULT_CONFIG: if key in parser['Settings']: CONFIG[key] = parser['Settings'][key] print(f"已从配置文件加载配置: {config_file}") except Exception as e: print(f"加载配置文件失败: {e},将使用默认配置") else: print("未指定配置文件或配置文件不存在,将使用默认配置") # 打印当前配置 print("当前配置:") for key, value in CONFIG.items(): print(f" {key}: {value}") def create_default_config(config_file): """ 创建默认配置文件 """ try: parser = configparser.ConfigParser() parser['Settings'] = DEFAULT_CONFIG with open(config_file, 'w', encoding='utf-8') as f: parser.write(f) print(f"已创建默认配置文件: {config_file}") return True except Exception as e: print(f"创建默认配置文件失败: {e}") return False def extract_urls_from_sql_file(): """ 从SQL文件中提取图片URL数据 """ urls = [] try: sql_file_path = CONFIG['SQL_FILE_PATH'] url_domain = CONFIG['URL_DOMAIN'] url_prefix = CONFIG['URL_PREFIX'] url_path_prefix = CONFIG['URL_PATH_PREFIX'] print(f"开始解析SQL文件: {sql_file_path}") # 使用正则表达式直接查找所有符合特定格式的URL # 动态构建正则表达式,使用配置中的域名和路径前缀 domain_escaped = url_domain.replace('.', '\\.') pattern = f"{url_prefix}{domain_escaped}{url_path_prefix}[^'\"]+" with open(sql_file_path, 'r', encoding='utf-8', errors='ignore') as file: content = file.read() matches = re.findall(pattern, content) for match in matches: # 将URL前缀替换为http://以便后续处理 url = match.replace(url_prefix, 'http://') urls.append(url) print(f"从SQL文件提取到…- 13
- 0

