首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
Julia简介
Julia 语言安装
Julia 交互式命令
Julia 基本语法
Julia 数组
Julia 元组
Julia 数据类型
Julia 复数和有理数
Julia 基本运算符
Julia 数学函数
Julia 字符串
Julia 正则表达式
Julia 函数
Julia 流程控制
Julia 字典和集合
Julia 日期和时间
Julia 文件读写
Julia元编程
当前位置:
首页>>
技术小册>>
Julia入门教程
小册名称:Julia入门教程
Julia 提供了一些基本的函数来处理文件: ``` open() - 打开文件 read() - 读取文件内容 close() - 关闭文件 ``` 从文件读取或者写入数据需要使用文件句柄。 文件句柄其实就是一个指针,指针就是指向文件中的某个位置。 从一个文件读取数据,应用程序首先要调用操作系统函数并传送文件名,并选一个到该文件的路径来打开文件,打开文件的函数取回一个顺序号,即文件句柄(file handle),该文件句柄对于打开的文件是唯一的识别依据。 ###open() 函数 Julia 可以使用 open() 函数打开一个文件,该函数返回文件句柄: 语法格式: ``` open(filename, mode) filename 为文件名,mode 为读写模式,可以是以下值: ``` ``` mode(模式) 描述 关键词 r read none w 写入、创建、截断 write = true a 写入、创建、追加 append = true r+ 读取, 写入 read = true, write = true w+ 读取, 写入、创建、截断 truncate = true, read = true a+ 读取, 写入、创建、写入、创建、追加 append = true, read = true ``` ``` # Windows 打开文件 foo = open("D://maxiaoke-test//julia//maxiaoke-file.txt") # Linux 或 Mac 打开文件 foo = open("./maxiaoke-test/julia/maxiaoke-file.txt") ``` ###close() 函数 在对文件操作完成后,我们需要对文件进行关闭操作,不然会造成资源泄露等问题,关闭文件使用 close() 函数: ``` # 关闭上面代码中打开文件返回的 foo 句柄 close(foo) ``` 在 Julia 中,我们建议任何文件处理函数包装在 do 语句块中,将文件处理函数包装在 do 语句块中的优点是,当该语句块执行完成时,打开的文件将自动关闭,就是会自动调用 close() 函数,如下所示: 实例 ``` open("./maxiaoke-test/julia/maxiaoke-file.txt") do file # 执行文件操作 end ``` 以上代码不需要调用 close() 函数,因为它会自动 close() 函数来关闭文件。 接下来我们创建一个 test.jl 文件,代码如下: test.jl 文件代码: ``` # 打开文件,如果文件不存在就创建 maxiaoke-file.txt io = open("maxiaoke-file.txt", "w"); # 写入文件内容 write(io, "Hello world!\nmaxiaoke Julia Test"); # 关闭文件 close(io); ``` 执行以上代码: ``` $ julia test.jl ``` 执行成功后,我们就在当前代码文件的目录下创建了一个 maxiaoke-file.txt 文件,写入内容如下: ``` Hello world! maxiaoke Julia Test ``` 我们可以使用 do 语句,这样就不需要使用 close() 函数: test.jl 文件代码: ``` open("maxiaoke-file.txt", "w") do io write(io, "Hello world!\nmaxiaoke Julia Test\n使用 do 语句") end; ``` 执行以上代码: ``` $ julia test.jl ``` 执行成功后,我们就在当前代码文件的目录下创建了一个 maxiaoke-file.txt 文件,写入内容如下: ``` Hello world! maxiaoke Julia Test ``` ###使用 do 语句 实例 ``` # 读取文件内容 txt = open("maxiaoke-file.txt") do file read(file, String) end; # 输出 println(txt) ``` ###read() 函数 使用 read() 函数,我们可以读取文件的全部内容,例如: ``` txt = read(foo, String) ``` 实例 ``` # 打开文件 file = open("maxiaoke-file.txt") # 读取文件内容 txt = read(file, String) # 关闭文件 close(file) # 输出 println(txt) ``` 执行以上代码,输出结果如下: ``` $ Julia test.jl Hello world! maxiaoke Julia Test ``` do 语句中使用 read() 函数: ``` open(filename) do file read(file, String) end ``` 实例 ``` # 读取文件内容 txt = open("maxiaoke-file.txt") do file read(file, String) end; # 输出 println(txt) ``` 执行以上代码,输出结果如下: ``` $ julia test.jl Hello world! maxiaoke Julia Test ``` 我们可以使用 readlines() 函数将文件内容按行放到数组中,语法如下: ``` readlines(io::IO=stdin; keep::Bool=false) readlines(filename::AbstractString; keep::Bool=false) ``` 实例 ``` # 打开文件 file = open("maxiaoke-file.txt") # 读取文件内容 txt=readlines(file, keep=true) # 关闭文件 close(file) # 输出 println(txt) ``` 执行以上代码,输出结果如下: ``` $ julia test.jl ["Hello world!\n", "maxiaoke Julia Test\n", "使用 do 语句"] ``` 我们也可以使用 eachline() 函数逐行处理文件: 实例 ``` # 打开文件 open("maxiaoke-file.txt") do file # 逐行读取文件内容 for ln in eachline(file) # 输出字符串长度与字符串 println("$(length(ln)), $(ln)") end end ``` 执行以上代码,输出结果如下: ``` $ julia test.jl 12, Hello world! 17, maxiaoke Julia Test 8, 使用 do 语句 ``` 我们也可以获取当前的行号: 实例 ``` open("maxiaoke-file.txt") do f # 设置行号 line = 1 while !eof(f) x = readline(f) println("$line $x") # 逐行递增 line += 1 end end ``` 执行以上代码,输出结果如下: ``` $ julia test.jl 1 Hello world! 2 maxiaoke Julia Test 3 使用 do 语句 ``` ###stat() 函数 stat() 函数用于获取文件的信息,格式如下: ``` stat(pathname) ``` 实例 ``` for n in fieldnames(typeof(stat("maxiaoke-file.txt"))) println(n, ": ", getfield(stat("maxiaoke-file.txt"),n)) end ``` 执行以上代码,输出结果如下: ``` $ julia test.jl desc: maxiaoke-file.txt device: 16777222 inode: 35345094 mode: 33188 nlink: 1 uid: 501 gid: 20 rdev: 0 size: 47 blksize: 4096 blocks: 8 mtime: 1.6524042534674733e9 ctime: 1.6524042534674733e9 ``` ###abspath() 函数 abspath() 函数用于获取文件的绝对路径,可以映射列表中: ``` stat(pathname) ``` 实例 ``` println(map(abspath, readdir())) ``` 执行以上代码,输出结果如下: ``` ["/Users/maxiaoke/maxiaoke-test/.Rhistory", "/Users/maxiaoke/maxiaoke-test/.vscode", ``` ###更多函数 下表列出来处理文件的其他相关函数: ``` 序号 函数及描述 1 cd(path)切换当前目录 2 pwd()获取当前目录 3 readdir(path)返回当前目录的文件与目录列表。 4 abspath(path)将当前目录的文件名生成绝对路径。 5 joinpath(str, str, ...)从参数中组装路径名。 6 isdir(path)判断提供的路径参数 path 是否是一个目录。 7 splitdir(path)将路径拆分为目录名和文件名的元组。 8 splitdrive(path)Windows 上将路径拆分为驱动器号部分和路径部分,在 Unix 系统上,第一个组件始终是空字符串。 9 splitext(path)如果路径的最后一个组件包含一个点,则将路径拆分为点之前的所有内容以及包括点和点之后的所有内容。 否则,返回一个未修改的参数和空字符串的元组。 10 expanduser(path)将路径开头的波浪字符 ~ 替换为当前用户的主目录。 11 normpath(path)规范化路径,删除 "." 和 ".." 目录 12 realpath(path)如果符号链接来规范化路径,并删除 "." 和 ".." 目录 13 homedir()获取当前用户的主目录。 14 dirname(path)获取路径参数 path 的目录部分 15 basename(path)获取路径参数 path 的文件名部分。 ```
上一篇:
Julia 日期和时间
下一篇:
Julia元编程
该分类下的相关小册推荐:
暂无相关推荐.