天才小兔子Bruce 2025-03-10 08:33 采纳率: 0%
浏览 5

python调用飞书API进行自动下载错误

背景:我在使用python调用飞书API进行自动下载多维表格
问题:我在使用pycharm直接运行时没有任何问题,文件成功下载。但是我将这个文件打包成exe文件后,日志显示ERROR - ❌ 发生异常:'NoneType' object has no attribute 'write'
额外条件:我在该程序中用了.lock文件防止重复运行,在查看后台的时候,我发现该程序会产生2个同名后台(例如:test 7; test 7),然后其中一个被删除,接着这个后台的名下产生了两个后台(例如:test 7(2)),不知道是不是这个影响了文件
如图所示:

img

问题代码片段:

# **下载文件**
def download_file():
    try:
        logging.info("🔄 正在执行定时任务...")
        deleted_files = delete_old_files()
        if deleted_files:
            logging.info(f"✅ 已删除以下过期文件:{', '.join(deleted_files)}")
        else:
            logging.info("🔔 没有过期文件需要删除。")

        tenant_access_token = get_tenant_access_token()
        wiki_data = get_wiki_api_data(tenant_access_token)
        obj_token = extract_obj_token(wiki_data)

        ticket = export_task(tenant_access_token, obj_token)
        file_token = get_export_task_status(tenant_access_token, ticket, obj_token)

        if not file_token:
            logging.error("❌ 获取 file_token 失败")
            return

        url = f"https://open.larksuite.com/open-apis/drive/v1/export_tasks/file/{file_token}/download"
        headers = get_authorization_header(tenant_access_token)

        response = requests.get(url, headers=headers, stream=True)

        if response.status_code == 200:
            today_date = datetime.now().strftime("%Y-%m-%d")
            file_path = os.path.join(DOWNLOAD_DIR, f"Case Management Platform {today_date}.xlsx")

            total_size = int(response.headers.get('Content-Length', 0))

            with open(file_path, 'wb') as file, tqdm(
                    desc=f"Downloading {file_path}",
                    total=total_size,
                    unit='B', unit_scale=True) as pbar:
                for chunk in response.iter_content(1024):
                    if chunk:
                        file.write(chunk)
                        pbar.update(len(chunk))
            logging.info(f"✅ 文件已下载并保存到:{file_path}")
        else:
            logging.error(f"❌ 文件下载失败,状态码: {response.status_code}")
    except Exception as e:
        logging.error(f"❌ 发生异常:{str(e)}")

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-03-10 08:39
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题解答

    你使用 Python 调用飞书 API 进行自动下载多维表格,直接在 PyCharm 中运行没有问题,但是将文件打包成 exe 文件后,出现错误。日志显示 ERROR - ❌ 发生异常。

    可能的原因是:

    1. 证书问题:在打包成 exe 文件后,可能会导致证书问题,导致 API 调用失败。
    2. 依赖库问题:在打包成 exe 文件后,可能会导致依赖库的问题,导致 Python 代码无法正确执行。

    解决方案:

    1. 检查证书问题:检查你的证书是否正确,是否需要添加证书到你的 Python 代码中。
    2. 检查依赖库问题:检查你的依赖库是否正确,是否需要添加依赖库到你的 Python 代码中。
    3. 使用 PyInstaller 打包:使用 PyInstaller 打包你的 Python 代码,可以解决证书和依赖库的问题。

    核心代码:

    import pyinstaller
    
    pyinstaller.build(exe_name='your_file_name.exe', 
                      a=your_file_name.py, 
                      onefile=True, 
                      console=True)
    

    其中,your_file_name 是你的 Python 文件名,exe_name 是你想要的 exe 文件名。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月10日