在网易云课堂上直接搜索:Julia教程 ,就可以找到,教程的全名是:Julia教程 从入门到进阶
这是国内第一个免费的完整的Julia视频教程,非常适合Julia的入门。有兴趣的朋友可以去学习一下。
教程链接:
Julia教程
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