我有一个目录,其中包含一堆没有标题的CSV文件.
我尝试这样做:
def add_headers_to_csvs
csvs = Dir["#{@dir_name}/#{@state}/*.csv"]
csvs.each do |csv_file|
CSV.open(csv_file, "a+", write_headers: true, headers: ["Company_Name","Website","Street_Address", "City", "State", "Zip", "Phone","Email"]) do |csv|
end
end
end
Run Code Online (Sandbox Code Playgroud)
我希望这个write_headers和headers:选项能够起作用,但事实并非如此.
我如何完成我想要做的事情?
您不能只是在适当的位置重新打开它们,尤其是在追加模式下.您需要打开一个新文件,编写标题,然后附加所有原始数据.
通常你会用某种临时文件来做这件事:
CSV.open(csv_file + '.tmp', 'w', write_headers: true, headers: [ ...]) do |dest|
# Transpose original data
CSV.open(csv_file) do |source|
source.each do |row|
dest << row
end
end
end
# Swap new version for old
File.rename(csv_file + '.tmp', csv_file)
Run Code Online (Sandbox Code Playgroud)
现在,您绝对希望备份原始数据,以防出现严重错误.