【问题标题】:Working from raw source data from a filepath containing spaces using make and Makefiles使用 make 和 Makefiles 从包含空格的文件路径中处理原始源数据
【发布时间】:2020-03-18 16:30:14
【问题描述】:

我有一个使用 python 脚本和 Makefile 的存储库。我想要一个设置程序 允许他们轻松设置环境并从我们的服务器复制必要的数据文件。

在 Makefile 中包含源数据文件的问题是公司服务器使用 驱动器名称中的空格,make 不太喜欢,所以我可以将这些文件列为依赖项 用于目标输出文件。

我目前的 Makefile 基本上只做以下几件事:

.PHONY : all
all : output.csv

.PHONY : copy_data_to_local_folder
copy_data_to_local_folder :
    python copyfile.py "V:\\Server Path\\With Spaces\\Inputs 1.csv" local/inputs1.csv
    python copyfile.py "V:\\Server Path\\With Spaces\\Inputs 2.csv" local/inputs2.csv

output.csv : combine_data.R local/inputs1.csv local/inputs2.csv
    Rscript $^ $@

copy_data_to_local_folder 部分只是为了获取数据到本地目录,但不包括在内 在 DAG 中导致产生output.csv(即all : output.csv copy_data_to_local_folder)或其他 目标每次都需要运行。

我的解决方案想法如下,但我不确定最佳做法是什么:

  1. 使用不同的制作工具。我可以在 Python 中使用 Luigi 或在 R 中使用 Drake,但我更愿意保留 该工具更加通用。

  2. 运行安装脚本以复制文件。我认为有一种方法可以运行文件复制脚本 作为环境设置的一部分,但我不熟悉如何执行此操作。

我不确定执行此操作的最佳方法。我希望能够与同事共享代码并拥有他们 能够在他们的系统上启动并运行,而无需进行过多的配置。有没有最好的 这种情况要练习吗?

【问题讨论】:

    标签: python python-3.x makefile data-science gnu-make


    【解决方案1】:

    一个解决方法是:

    local/inputs1.csv :
        python copyfile.py "V:\\Server Path\\With Spaces\\Inputs 1.csv" $@
    local/inputs2.csv :
        python copyfile.py "V:\\Server Path\\With Spaces\\Inputs 2.csv" $@
    
    output.csv : combine_data.R | local/inputs1.csv local/inputs2.csv
        Rscript $^ $| $@
    

    请注意,local/inputs1.csvlocal/inputs2.csv 是仅用于订购的先决条件,因此它们仅在它们不存在时才会生成(除非您想在每次运行 makefile 时复制它们)。自动变量$| 指的是仅限订单的先决条件,它们不包含在$^ 中。

    【讨论】:

    • 我不知道这个功能的存在,这非常有用。谢谢!
    • @teepee 这 2 条重复规则可能可以替换为 1 条模式规则(单行):local/inputs%.csv : ; python copyfile.py "V:\\Server Path\\With Spaces\\Inputs $*.csv" $@
    • 谢谢,马克西姆。我想问题在于本地文件名将保留其任何空格,因为我无法使用该规则指定不同的名称,对吧?
    • @teepee 该模式规则创建的文件与您的原始规则具有相同的本地名称 - local/inputsN.csv
    猜你喜欢
    • 1970-01-01
    • 2011-08-25
    • 2014-05-18
    • 1970-01-01
    • 2013-04-07
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多