如何在GitHub Actions中保存Python函数的输出结果?
解决GitHub Action中捕获Python函数输出的问题
问题根源
Python函数的return值不会自动输出到终端的标准输出(stdout),而GitHub Action里的命令替换$(...)、环境变量赋值都是基于捕获stdout内容实现的。你之前的代码只是调用了example()但没把返回值输出,所以自然拿不到任何内容。
第一步:修改Python代码
必须把函数的返回值打印到stdout,才能让GitHub Action捕获到。修改你的test.py:
def example(): return "a" if __name__ == "__main__": # 把返回值打印出来,输出到stdout print(example())
第二步:在GitHub Action中保存到变量
这时候你原来的写法就能生效了,注意echo时加引号避免特殊字符被解析:
- name: Check renamed files run: | INPUT_STORE=$(python3 test.py) # 加双引号保留输出的格式(比如换行) echo "$INPUT_STORE"
第三步:保存到环境变量(支持单行/多行输出)
如果要把输出存入环境变量供后续步骤使用,分两种情况处理:
单行输出
直接用命令替换赋值:
- name: Set env variable (single line) run: echo "MY_STRING=$(python test.py)" >> $GITHUB_ENV
多行输出
用EOF语法避免换行被截断,注意格式要正确:
- name: Set env variable (multi line) run: | echo "MY_STRING<<EOF" >> $GITHUB_ENV # 直接把Python的输出追加到环境变量文件 python test.py >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV
纠正你之前的错误写法
你尝试的MY_STRING="{$(python test.py }})} EOF"存在语法错误,多余的括号会导致命令执行失败,而且EOF的位置也不对,按照上面的写法就能解决问题。
内容的提问来源于stack exchange,提问作者may
相关产品推荐
相关产品推荐

