Juliaのファイル操作

書き込み

#書き込み(上書き)
julia> iow = open("text.txt","w")
julia> write(iow,"Hello world")
julia> close(iow)

#書き込み(追記)
julia> ioa = open("text.txt","a")
julia> write(ioa,"Append world")
julia> close(ioa)

doブロックを使えば自動的に閉じられるのでcloseは必要ない.

open("mytext.txt","w") do iow
  write(iow,"Hello world")
end

読み込み

doブロックの外側で宣言した変数を改変したいときは、globalスコープを使う必要がある.

julia> val = "aa"
"aa"
julia> val2 = "aa"
"aa"

julia> open("test.txt","r") do ior
         text = read(ior,String)
         text = replace(text,"\n" => "") #改行コードの除去
         global val = text
         val2 = text
       end
"Hello worldAppend world"

julia> println(val)
Hello worldAppend world

julia> println(val2)
aa

readlines関数

各行を文字列の配列にして返す.

julia> open("test.txt","r") do ior
           lines = readlines(ior)
           println(lines)
       end
["Hello world", "Append world"]

keepオプションをtrueにすると改行コードは保たれる.

julia> open("test.txt","r") do ior
           lines = readlines(ior,keep=true)
           println(lines)
       end
["Hello world\n", "Append world"]

eachline関数

ファイルを指定するだけ.

julia> for line in eachline("test.txt")
           println(line)
       end
Hello world
Append world

パス取得

pwd()homedir()がある.

julia> pwd()
"/Users/dxsato/Desktop/Julia/"

julia> homedir()
"/Users/dxsato"

ディレクトリ操作

mkdir()で新たなディレクトリを作成可能.

julia> mkdir("test")

readdir()ディレクトリの中身を取得.

julia> readdir("test")
0-element Array{String,1}

mkdir()は存在しないディレクトリの内側にさらに新たなディレクトリを作成することはできないが、mkpath()なら一気に作成可能.

mkpath("dir1/dir1_1")

cd()で移動可能.

julia> cd("test")

forwalkdir()を合わせると再帰的なディレクトリ情報の取得が可能.

julia> for (path, arr_dir, arr_file) in walkdir(pwd())
               println(path)
               [println(dir) for dir in arr_dir]
               [println(file) for file in arr_file]
       end
/Users/dxsato/Desktop/Julia/test/
dir1
test
dummy_SNPs.txt
dummy_microarray.txt
test.txt
text.txt
問題.pdf
/Users/dxsato/Desktop/Julia/test/dir1
dir1_1
/Users/dxsato/Desktop/Julia/test/dir1/dir1_1
/Users/dxsato/Desktop/Julia/test/test

filesize():ファイルサイズの取得.

basename():ベース名の取得.

dirname()ディレクトリ名の取得.

joinpath():パスの連結.

cp():コピー. force=trueを指定すると、コピー先を削除してからコピーできる.

mv():ファイルの移動.

rm():ファイルの削除.recursive=trueを指定するとディレクトリの中身も全て削除できる.