You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python发送数据到API成功后自动删除对应txt文件的实现方法

API发送成功后自动删除源txt文件实现方案

现有代码核心问题

现有代码存在两个关键问题,导致无法实现预期的删文件逻辑:

  1. scan_files函数仅返回了解析完成的字典数据,没有记录每个字典数据对应的源文件路径,API发送成功后无法定位要删除的目标文件
  2. 代码中使用os.chdir(path)切换工作目录的写法容易引发路径匹配错误,且失败分支中调用的close()无对应操作对象,属于无效代码

修改思路

  • 调整文件扫描逻辑,将「解析后的数据」和「对应源文件的完整路径」成对存储、传递
  • 在API返回2xx成功状态码的分支中,调用os.remove(文件路径)删除对应源文件
  • 移除无效冗余代码,避免不必要的工作目录切换,减少路径错误概率

修改后可直接复用的代码

import os
import requests
import glob

# 基础配置
path = "./file"
URL = 'http://.......'  # 替换为实际API地址

def main():
    print("程序启动\n")
    # 扫描文件得到(文件路径, 解析后数据)的配对列表
    file_data_list = scan_files(path)
    # 逐个发送数据
    for file_path, json_data in file_data_list:
        send_api(URL, json_data, file_path)

def read_text_file(file_path):
    data_dictionary = {}
    # 显式指定编码避免不同系统下的中文乱码
    with open(file_path, 'r', encoding='utf-8') as file:
        data = file.readlines()
        # --- 原有解析逻辑保持不变 ---
        # ...............
        '''UPDATE THE DICTIONARY'''
        # data_dictionary.update([(...)(...)])
        # --- 解析逻辑结束 ---
    return data_dictionary

def scan_files(target_path):
    file_data_list = []
    # 直接拼接txt文件完整路径,不切换全局工作目录
    for file in glob.glob(os.path.join(target_path, "*.txt")):
        parsed_data = read_text_file(file)
        # 同时存储文件路径和对应解析后的数据
        file_data_list.append( (file, parsed_data) )
    return file_data_list

def send_api(url, json_data, source_file_path):
    requests_session = requests.session()
    post_api = requests_session.post(url, data=json_data)
    print("正在发送API请求")

    if 200 <= post_api.status_code < 300:
        print(f"发送成功,状态码: {post_api.status_code}")
        # 发送成功才执行删除操作
        os.remove(source_file_path)
        print(f"已删除对应源文件: {source_file_path}\n")
    else:
        print(f"发送失败,状态码: {post_api.status_code},保留源文件不做处理\n")

    return post_api.status_code

if __name__ == "__main__":
    main()

注意事项

  • 所有文件路径通过os.path.join()拼接,不会因为工作目录变化出现文件找不到的问题
  • 仅当状态码落在200-299的成功区间时才会执行删除,发送失败的文件会完整保留
  • 原代码中导入的fileinput.close、datetime、time未被使用,已做移除,后续需要可自行加回

内容的提问来源于stack exchange,提问作者Zulaikha Ibrahim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 02:57:18