はじめに
Rubyを使って、CSVファイルから読み込んだ内容を元に
ファイルとかディレクトリをまとめて作るプログラムを作ってみました
作成目的
・ファイルメーカー
プログラムコンテストの問題なんかを解く時に一々ファイル作るの面倒だな
→出来ればファイル名とか指定して作れると楽
・ディレクトリメーカー
上で作ったファイルをしっかり分類しておきたいな
→深い階層まで一気に作れると楽
・(双方共通)して一々プログラムを弄らなくても済むように、CSVファイルでまとめて読み込めるようにしたいな
(連番ならエクセルを使う事で楽に作れるため)
ソースコード
どちらもAtcoderのABC用に作ると想定してます
・ファイルメーカー
Encoding.default_external = Encoding::UTF_8
require 'csv'
require 'fileutils'
require 'date'
filelist = CSV.readlines("filelist.csv").flatten
filelist.each do |i|
File.open "#{i}",'w' do |r|#作成したファイルを書き込みモードで開く
r.write "#Created on #{Date.today}" #中身に必要な物を書く、今回は日付
end
end
060A.rb
060B.rb
060C.rb
060D.rb
...
057D.rb
056A.rb
056B.rb
056C.rb
056D.rb
・ディレクトリメーカー
Encoding.default_external = Encoding::UTF_8
require 'csv'
require 'fileutils'
dirlist = CSV.readlines("dirlist.csv").flatten #ネストした状態で格納されてる、でも普通の区切りで問題ないのでflatten
dirlist.each do |i|
FileUtils.mkdir_p("#{i}") #ダブルコーテションじゃないとiが反応しないので注意
end
./ABC/ABC060
./ABC/ABC059
./ABC/ABC058
./ABC/ABC057
./ABC/ABC056
実行時の挙動
予めCSVファイルを作成しておいて、同じディレクトリにある状態でプログラムを走らせれば
CSVファイルに記入した内容で勝手に作ってくれます
今後の課題
二つを一体化させて、ディレクトリとファイルを同時に作っても良いかもしれない
ただ個人的に使う分には上記二つで充分なので作るか微妙
(そもそも大量にフォルダとファイルを作る機会があんまり無い)
雑感
プログラミングによって、作業が凄く楽になったと実感するプログラムが初めて書けたと思いました
少し書き換えればJavaにも対応可能なので、個人的には良いのが作れたかなーと
ただもっと発展させる事が出来そうな気もするので頑張りたいです