Ruby 如何将标题写入现有CSV?
我有一个目录,里面有一堆没有标题的CSV文件 我试着这样做:Ruby 如何将标题写入现有CSV?,ruby,csv,Ruby,Csv,我有一个目录,里面有一堆没有标题的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
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
我希望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)
CSV.open(CSV_file+'.tmp',w',write_头:true,头:[……])do|dest|
#转置原始数据
CSV.open(CSV_文件)do|源|
source.do每行|
dest您不能就地重新打开它们,尤其是在追加模式下。您需要打开一个新文件,写入标题,然后附加所有原始数据
通常,您会使用某种临时文件执行此操作:
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)
CSV.open(CSV_file+'.tmp',w',write_头:true,头:[……])do|dest|
#转置原始数据
CSV.open(CSV_文件)do|源|
source.do每行|
这就是我想要避免的。只需在顶部添加一行,我就必须重建整个CSV文件?无法在CSV文件中的位置i[0]
粘贴新行?文件不是这样工作的,不能“插入”数据并让字节神奇地移动。附加是很容易的。预挂起涉及更多的工作,通常是重新写入整个文件。好的……我会考虑这个方法。我只是试了一下,效果很好。它实际上比我想象的要快得多。多谢!很高兴听到!是啊,有些事情的速度之快令人惊讶。这些天计算机真是太神奇了。这是我一直在努力避免的。只需在顶部添加一行,我就必须重建整个CSV文件?无法在CSV文件中的位置i[0]
粘贴新行?文件不是这样工作的,不能“插入”数据并让字节神奇地移动。附加是很容易的。预挂起涉及更多的工作,通常是重新写入整个文件。好的……我会考虑这个方法。我只是试了一下,效果很好。它实际上比我想象的要快得多。多谢!很高兴听到!是啊,有些事情的速度之快令人惊讶。现在的电脑真是太神奇了。