代码之家  ›  专栏  ›  技术社区  ›  Samira

python中的ByteIO()文件无法上传到Bitbucket,函数会反复调用

  •  0
  • Samira  · 技术社区  · 3 年前

    我有两个函数,它们可以相互调用,其中一个是上传函数,它将文件上传到Bitbucket,一个上传的文件是由用户拖放的,另一个是拖放的文件与另一个目录中的另一个文件连接的结果,拖放的文件被正确上传到Bitbucket,但另一个函数(函数的名称是gbl_delta_historization_api)中的文件连接结果无法上传到Bitbaret(这个文件的类型应该是BytesIO),这个函数通过上传函数一次又一次地调用,为了停止它,我应该杀死脚本,在下面的代码中你可以看到上传函数的一部分:这是因为

     def upload(
            self, belle_type: str, environment: str, user: str, token: str,
            project: str, repo: str, branch: str, file,
            filename="auto", overwrite=False
        ) -> str:
        if belle_type == "gbl_delta_business":
                file.seek(0)
                return gbl_delta_historization_api(
                    git_login=user,
                    git_write_token=token,
                    file=file.read(),
                    upload=self.upload,
                    enviro=environment,
                    belle_type=belle_type,
                    belle_git_project=project,
                    belle_git_repo=repo,
                    belle_git_branch=branch
                )
        return fn if res.status_code in [200, 409] else "" 
    

    另一个函数的名称是gbl_delta_historization_api,此函数在函数的开头和结尾两次调用upload函数,如下所示:

    def gbl_delta_historization_api(
        git_login, 
        git_write_token,
        file,
        upload,
        enviro='uat',
        #filename='dqchecks_belle_gds_uat.csv',
        belle_type='gbl_delta_business',
        belle_git_project='DQM',
        belle_git_repo='dqm-belle-repo',
        belle_git_branch='master'
    ):
    
     #some codes for the calculation and concatenation of files are here
    
            df_real_out_buffer = BytesIO()
            df_real_out.to_csv(df_real_out_buffer, sep=";", index=False)
    
            # call the function that was passed as an argument
            return upload(
                belle_type="gbl_delta_business" if enviro=="prod" else "gbl_delta_uat_business",
                environment=enviro,
                user=git_login,
                token=git_write_token,
                project=belle_git_project,
                repo=belle_git_repo,
                branch=belle_git_branch,
                file=df_real_out_buffer,
                filename="auto",
                overwrite=False
            )
        else:
            return res2.status_code
        return  
    

    我该如何解决这个问题?实际上,连接的结果是数据帧和正确的结果,但要将文件上传到Bitbucket,我们需要BytesIO文件

    0 回复  |  直到 3 年前