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")
for
とwalkdir()
を合わせると再帰的なディレクトリ情報の取得が可能.
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
を指定するとディレクトリの中身も全て削除できる.