1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rubyでファイルとかディレクトリをまとめて作る

Posted at

はじめに

Rubyを使って、CSVファイルから読み込んだ内容を元に
ファイルとかディレクトリをまとめて作るプログラムを作ってみました

作成目的

・ファイルメーカー
プログラムコンテストの問題なんかを解く時に一々ファイル作るの面倒だな
→出来ればファイル名とか指定して作れると楽

・ディレクトリメーカー
上で作ったファイルをしっかり分類しておきたいな
→深い階層まで一気に作れると楽

・(双方共通)して一々プログラムを弄らなくても済むように、CSVファイルでまとめて読み込めるようにしたいな
(連番ならエクセルを使う事で楽に作れるため)

ソースコード

どちらもAtcoderのABC用に作ると想定してます

・ファイルメーカー

file_maker.rb
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
filelist.csv
060A.rb
060B.rb
060C.rb
060D.rb
...
057D.rb
056A.rb
056B.rb
056C.rb
056D.rb

・ディレクトリメーカー

directory_maker.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
dirlist.csv
./ABC/ABC060
./ABC/ABC059
./ABC/ABC058
./ABC/ABC057
./ABC/ABC056

実行時の挙動

予めCSVファイルを作成しておいて、同じディレクトリにある状態でプログラムを走らせれば
CSVファイルに記入した内容で勝手に作ってくれます

今後の課題

二つを一体化させて、ディレクトリとファイルを同時に作っても良いかもしれない
ただ個人的に使う分には上記二つで充分なので作るか微妙
(そもそも大量にフォルダとファイルを作る機会があんまり無い)

雑感

プログラミングによって、作業が凄く楽になったと実感するプログラムが初めて書けたと思いました
少し書き換えればJavaにも対応可能なので、個人的には良いのが作れたかなーと
ただもっと発展させる事が出来そうな気もするので頑張りたいです

1
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?