我有两个函数,它们可以相互调用,其中一个是上传函数,它将文件上传到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文件