从Ruby开始,尝试创建一个简单的重命名Ruby脚本。假设我有一个目录,其中包含简历,其中包含随机文件名,例如:Resume0001,Resume0012,Resume9123,Res_430。通常,起始名称是什么都没有关系。
我希望脚本吸收每个文件,然后以文件名作为简历所有者的名称来重命名(或创建一个新文件)。我了解这当然取决于简历的布局,但是,我假设第一行仅包含该人的姓名。
根据我所知道的,我能够通过手动输入参数(文件)来重命名它们。如果我只想做5张履历表,那会很好。当我尝试向脚本提供约10,000个简历的目录时,出现了我的问题。
这是我到目前为止的内容:
puts "Renaming files..."
Dir.glob("Resumes") do |f|
File.rename(f, f.readline())
end
puts "Renaming complete."
我有几个主意,为什么这不起作用/我不确定的事情:
f
只是一个字符串,而不是一个文件对象,这就是为什么readline()
不能在其上工作的原因。(编辑:f ==文件名,而不是对实际文件对象的引用)
我也收到一个私有方法错误。如果我尝试类似的事情,也会发生这种情况
first_line = f.readline() File.rename(f, first_line)
我只是很难理解什么是私有方法错误。
我不完全确定指定目录路径的工作方式。假设我的.rb文件位于documents\name\resume_converter\converter.rb
。如果我的简历目录也位于resume_converter
文件夹(resume_converter\Resumes
)中,则应在Dir.glob("Resumes")
?中指定它。如果这是另一个更深的文件怎么办?resume_converter\Dummy_folder\Resumes
=>Dir.glob("Dummy_folder\Resumes")
吗?
我正在尝试做的事情有框架支持吗?我没有实际的Rails /框架知识,但是我想象在使用框架之前已经完成了类似的任务?
是的,我被困住了。
这样的事情应该起作用:
require 'fileutils'
Dir.glob("Resumes/*").each do |f|
name = File.open(f).readlines.first.strip # Strip off any whitespace or trailing newlines
FileUtils.mv(f, "Resumes/#{name}")
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句