使用Python解压文件夹及Lox文件获取日志文件遇问题求助
排查Python脚本无法解压Lox文件内日志的问题
可能的错误原因及解决步骤
1. 解压路径匹配错误
你的代码默认Conquest.zip解压后会生成同名的Conquest文件夹,但如果压缩包本身没有根文件夹结构(文件直接放在压缩包根目录),extracted_folder这个路径就不存在,导致后续遍历不到.lox文件。
可以先添加路径校验,确认解压后的文件夹是否存在:
print(f"解压目标路径: {extracted_folder}") print(f"路径是否存在: {os.path.exists(extracted_folder)}")
2. Lox文件并非标准Zip格式
zipfile模块仅支持符合Zip规范的文件,如果.lox是自定义压缩格式(比如改了扩展名的7z/rar,或是游戏专属压缩格式),用zipfile打开会失败,但无异常捕获的话你看不到错误信息。
建议添加异常捕获,排查解压失败的具体原因:
try: with zipfile.ZipFile(lox_path, 'r') as lox_ref: lox_ref.extractall(extracted_folder) os.remove(lox_path) except zipfile.BadZipFile as e: print(f"{lox_path} 不是标准Zip文件: {e}") except Exception as e: print(f"解压{lox_path}出错: {e}")
3. 文件遍历逻辑遗漏子文件夹
os.listdir只会遍历当前目录的文件,如果.lox文件在解压后的子文件夹里,会被遗漏。
修正后的代码
结合路径校验、异常捕获和递归查找逻辑,修改后的代码如下:
import zipfile import os zip_path = r'C:\Users\Zachary\Zip\Conquest.zip' extract_to = r'C:\Users\Zachary\Zip' def extract_lox_logs(zip_path, extract_to): # 解压主压缩包 with zipfile.ZipFile(zip_path, 'r') as zip_ref: zip_ref.extractall(extract_to) # 打印压缩包内结构,确认解压路径是否正确 print("压缩包内文件结构:") for item in zip_ref.namelist(): print(f"- {item}") # 递归查找所有.lox文件 for root, _, files in os.walk(extract_to): for file in files: if file.endswith(".lox"): lox_path = os.path.join(root, file) print(f"找到Lox文件: {lox_path}") try: with zipfile.ZipFile(lox_path, 'r') as lox_ref: lox_ref.extractall(root) print(f"成功解压{lox_path}") os.remove(lox_path) except zipfile.BadZipFile: print(f"错误:{lox_path} 不是标准Zip格式,无法用zipfile解压") except Exception as e: print(f"解压{lox_path}失败: {str(e)}") extract_lox_logs(zip_path, extract_to)
额外建议
- 运行修正后的脚本,查看控制台输出的压缩包结构和Lox文件处理信息,快速定位问题。
- 如果确认Lox不是Zip格式,可尝试使用第三方库(如
py7zr处理7z格式、patool支持多格式)进行解压。
内容的提问来源于stack exchange,提问作者Pac-Zac
相关产品推荐
相关产品推荐

