gpt4 book ai didi

ruby - 如何使用输入文件名与 Rake 生成输出文件名?

转载 作者:太空宇宙 更新时间:2023-11-03 16:05:12 27 4
gpt4 key购买 nike

我有一些输入文件,我想使用 Ruby 对其进行编码。编码的输出应根据输入文件的文件名匹配某种模式。为了不手动执行此操作,我想使用 Rake 作为自动化的帮助。此外,我不想为每个输入文件指定一个任务。

我尝试了一些 FileList 的“魔法”,但没有成功。这是代码:

desc 'Create all output from specified input'
task :encode do
FileList['input/*.txt'].each {|input| file "output/output_#{input}" => input}
end

有人可以帮忙吗?我没有在网上找到任何关于多个输出文件作为依赖项的信息。

最佳答案

我会考虑使用 Rake 的 rule 任务,它允许根据正则表达式规则动态定义任务。查看rakefile rdoc详情页,但这里有一个例子:

# creates the 'output' directory on demand
directory "output"

# define a task rule covering all the output files
rule %r{output/output_} => ['output', proc {|task_name| "input/#{task_name.sub('output/output_', '')}.txt"}] do |t|
# replace this with your encoding logic
sh "echo 'file #{t.source}' > #{t.name}"
end

# define a top-level 'encode' task which depends on all the 'output/output_*' tasks
task :encode => Dir['input/*.txt'].map {|x| "output/output_#{File.basename(x).sub('.txt', '')}"}

然后您应该能够在包含匹配input/* 的文件的目录中运行rake encode,并将输出文件放在output/output_*.

关于ruby - 如何使用输入文件名与 Rake 生成输出文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15493501/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com