Python 是否可以使用GitLab CI将文件写入计算机(本地驱动器)?

Python 是否可以使用GitLab CI将文件写入计算机(本地驱动器)?,python,python-3.x,pandas,gitlab,gitlab-ci,Python,Python 3.x,Pandas,Gitlab,Gitlab Ci,我正在尝试运行一个Python脚本,使用GitLab CI,它将创建一个Pandas数据帧,并在我的机器上将其作为.csv文件写入 作为测试脚本,我创建了以下do_stuff_2.py文件: import datetime import pandas as pd import numpy as np current_time = datetime.datetime.now() print(f'Hello.\nCurrent date/time is:{current_time}') df =

我正在尝试运行一个Python脚本,使用GitLab CI,它将创建一个Pandas数据帧,并在我的机器上将其作为.csv文件写入

作为测试脚本,我创建了以下do_stuff_2.py文件:

import datetime
import pandas as pd
import numpy as np

current_time = datetime.datetime.now()
print(f'Hello.\nCurrent date/time is:{current_time}')

df = pd.DataFrame(np.random.randint(0,100,size=(10, 4)), columns=list('ABCD'))
print(df)

df.to_csv('C:\\<USER_PATH>\\Desktop\\df_out.csv', index = False)
numpy
pandas
以及requirements.txt文件:

import datetime
import pandas as pd
import numpy as np

current_time = datetime.datetime.now()
print(f'Hello.\nCurrent date/time is:{current_time}')

df = pd.DataFrame(np.random.randint(0,100,size=(10, 4)), columns=list('ABCD'))
print(df)

df.to_csv('C:\\<USER_PATH>\\Desktop\\df_out.csv', index = False)
numpy
pandas
看起来我已经正确设置了所有内容,因为时间正在显示,并且
print
函数返回数据帧。但是,不会将任何文件写入指定位置。当我在本地运行脚本时,一切正常,数据帧以df_out.csv的形式保存在我的桌面上

我正在Windows10机器上使用Python3.6

在GitLab的CI管道中是否有其他方法可以执行此操作?

您需要在本地计算机上安装GitLab runner

如果不能,可以使用
工件:
关键字将脚本结果上传到gitlab服务器上,然后从UI下载。您的
gitlab ci.yml
将如下所示:

stages:
    - build

build:
    stage: build
    image: python:3.6
    script: 
        - echo "Running python..."
        - pip install -r requirements.txt
        - python do_stuff_2.py
    artifacts: 
        paths:
        - df_out.csv
您的代码必须更改为:

df.to_csv('df_out.csv', index = False)

我似乎无法安装runner—可能与业务访问权限有关。我已经注册了runner,它出现在GitLab的UI中,但是当我尝试安装时,我得到了一个拒绝访问的错误。使用上面的代码,
工件
关键字将导致保存CSV文件,但在CI管道完成运行后,我仍必须手动下载它,对吗?是的,您需要手动卸载它,但也可以使用下载itGitLab正在为上面的.yml配置引发错误:此GitLab CI配置无效:():在分析第8行第9列的块集合时未找到预期的“-”指示符“谢谢,成功了。这回答了我最初的问题,但是您知道在管道仍在运行时是否可以使用API来下载新创建的工件吗?查看链接到的API文档,大致如下:
-'curl--location--output artifacts.zip“https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts?job_token=$CI_JOB_TOKEN“'
有意义。我会把那一行包括在.yml文件中吗?你可以在另一个工作中,而不是生产工件。但你为什么要这么做?由于您将在运行程序的上下文中执行此命令,因此工件将被下载到运行程序文件系统上(如果我理解得很好,您无权访问该文件系统)