Julia教程8 读写文件操作

文章目录

  • IO操作
    • 读文件操作
    • 写文件操作
    • csv文件
    • JLD2
    • IOBuffer

在网易云课堂上直接搜索:Julia教程 ,就可以找到,教程的全名是:Julia教程 从入门到进阶

这是国内第一个免费的完整的Julia视频教程,非常适合Julia的入门。有兴趣的朋友可以去学习一下。

教程链接:
Julia教程

文章目录

  • IO操作
    • 读文件操作
    • 写文件操作
    • csv文件
    • JLD2
    • IOBuffer

IO操作

在对文件的操作中,如果我们未指定文件的路径,则默认的路径为

  • 在使用Atom或vscode时,默认路径即为.jl文件的目录
  • 在使用jupyter notebook时,windows系统默认路径为’C:\Users\用户名’;MAC的目录在jupyter中可以看到

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c3piykXY-1592662419590)(https://raw.githubusercontent.com/Bounce00/pic/master/Julia%20course/Julia%20IO1.png)]

  • 在使用REPL时,系统默认路径为Julia的安装目录,可以执行pwd()命令可查看当前的工作路径,,如果想更换路径,使用cd(dir::String)命令,若想跟换回原始路径,使用homedir()命令

读文件操作

s1 = readlines("sdy.txt")
s2 = open("sdy.txt","r")
line = readline(s2)
eof(s2)
position(s2)
read(s2,Char)
line = readline(s2)
read(s2,Int8)
close(s1)

在REPL中,可以查看open的用法,在open中,还可以调用函数

open(readline, "sdy.txt")

当然,也可以调用自定义的函数

readFunc(s::IOStream) = read(s, Char)
open(readFunc, "sdy.txt")

还可以像Python中的with open...as的用法一样打开文件

open("sdy.txt","r") do stream
    for line in eachline(stream)
        println(line)
    end
end

也可以将上述过程定义成函数再用open操作

function readFunc2(stream)
    for line in eachline(stream)
        println(line)
    end
end
open(readFunc2, "sdy.txt")

写文件操作

write("wrFile1.txt", "Hello World")
open("wrFile2.txt","w") do f
    for ch in 'a':'z'
        write(f, ch)
    end
    write(f,'\n')
end

open函数中的参数模式定义如下

Mode Description
r read
w write, create, truncate
a write, create, append
r+ read, write
w+ read, write, create, truncate
a+ read, write, create, append
io = open("wrFile3.txt","w")
write(io, "Write File...\n")

但这种读写文件的方式对矩阵操作支持不太好

mat = reshape(1:9, (3,3))
write("mat.txt", mat)

最好使用DelimitedFiles包进行矩阵的读写操作

using DelimitedFiles
m = reshape(1:9, (3,3))
writedlm("number.txt", m, '\t')

cont = readdlm("number.txt")

除了txt格式外,Julia还可以对csv等格式,但Julia自带的数据序列化工具JLD2速度速度更快,扩平台,重点推荐。

csv文件

写csv文件与操作普通文件类似,中间加个逗号就可以了。

using DelimitedFiles
data = rand(Int8,10,5)
writedlm("file1.csv", data, ',')

读文件时,我们可以使用DataFrames来读csv文件。
关于DataFrames我们将在科学计算一节中讲到。

using DataFrames
df = readtable("file1.csv")

也可以使用CSV package自带的函数读取

using CSV
df1 = CSV.read("file1.csv")

用CSV.read()读上来的数据也是DataFrame格式。

JLD2

JLD2是JLD格式的改进,也是一种HDF5格式。

写文件

using JLD2
stri = "hello world"
fid = jldopen("jld_test.jld2","w")
write(fid, "stri", stri)
close(fid)

读文件

fid = jldopen("jld_test.jld2","r")
res = read(fid,"ss")

IOBuffer

相当于在内存中创建一个IOStream

io = IOBuffer()
write(io, "Hello World!", " JuliaLang is great!")

采用take!的方式将内容从IOBuffer中读出

String(take!(io))

如果在创建IOBuffer时就指定了里面的内容,则词IOBuffer为只读的。

io = IOBuffer("Hello World!")
write(io, "This is not writable.")
read(io, String)

关闭IOBuffer

close(io)

欢迎关注微信公众号:Quant_Times

在这里插入图片描述

你可能感兴趣的:(Julia,Julia,Julia教程,Julia读写文件)