北京大学Julia语言讲义第6章: 文件

对文本文件
readlines(filename)函数根据输入的文件名读入文件的各行为字符串数组,
每个元素是一行,
缺省行为会读入换行符但结果字符串不包含换行符,
加选项keep=true可以保留换行符。
read(filename, String)将整个文件读入为一个长字符串。

fh = open(filename)打开指定的文件用于读取,
这里fh称为一个文件句柄。
读取如readline(fh)
缺省行为会读入换行符但结果字符串不包含换行符,
加选项keep=true可以保留换行符。
close(fh)关闭fh对应的文件。

很大的文件可以每次读入一行进行处理,框架如:

open(filename) do io
    line = readline(io)
    process(line)
end

fh = open(filename, "w")打开指定的文件用于输出,
写入如println(fh, "x = ", x)
对于字符串s,
也可以用write(fh, s)写入。
结束写入后用close(fh)关闭输出文件。

6.2 文件和目录信息

参考:

  • https://docs.julialang.org/en/v1/base/file/

文件保存在目录(directory)中。
pwd()返回当前的工作目录,
不给定具体路径的文件名默认在工作目录中。
cd(path)设定path为当前工作目录。

因为不同操作系统的文件路径写法不同,
所以尽可能使用Julia的函数来对路径进行操作。
abspath(filename)求一个文件的绝对路径。
dirname(filename)求一个文件所在的目录。
joinpath()将目录与文件连接成一个完整路径。

dirname(path)获取文件路径的目录部分,
basename(path)获取文件路径除去目录的部分。

可以用dirname(@__FILE__)获取正在运行的源程序文件所在的目录。
设这个源文件同级有一个data子目录,
其中有pat.csv数据文件,
可以用

root = dirname(@__FILE__)
fd = joinpath(root, "data", "pat.csv")

获得文件的全路径,保存在变量fd中。

ispath(filename)判断每个文件或者目录是否存在。
isdir(filename)判断某个路径是否目录,
isfile(filename)判断某个路径是否文件。

readdir(path)返回指定目录的文件和子目录列表,
path时对应当前工作目录。

walkdir(path)提供了对一个目录及其中的子目录遍历的功能,
遍历时提供了当前目录、其中的子目录列表、其中的文件列表。

显示一个目录下的所有文件和子目录的样例程序如下:

for (root, dirs, files) in walkdir(".")
    println("正在显示$(root)内容---子目录:")
    for dir in dirs
        println(joinpath(root, dir)) # path to directories
    end
    println("正在显示$(root)内容---文件:")
    for file in files
        println(joinpath(root, file)) # path to files
    end
end

如果不用内置的walkdir函数,
可以递归调用如下:

function mywalk(dir)
    println("正在显示$(dir)内容:")
    ## 先显示所有文件
    for name in readdir(dir)
        path = joinpath(dir, name)
        if isfile(path)
            println(path)
        end
    end
    ## 再深入每个子目录
    for name in readdir(dir)
        path = joinpath(dir, name)
        if isdir(path)
            mywalk(path)
        end
    end
end

mywalk(".")

韭菜热线原创版权所有,发布者:风生水起,转载请注明出处:https://www.9crx.com/75095.html

(0)
打赏
风生水起的头像风生水起普通用户
上一篇 2023年8月18日 23:33
下一篇 2023年8月19日 23:43

相关推荐

  • 北京大学R语言教程(李东风)第52章:Rcpp介绍

    为了提高R程序的运行效率,可以尽量使用向量化编程,减少循环,尽量使用内建函数。对于效率的瓶颈,尤其是设计迭代算法时,可以采用编译代码,而Rcpp扩展包可以很容易地将C++代码连接到R程序中,并且支持在C++中使用类似于R的数据类型。 没有学过C++语言的读者,如果需要编写比较独立的不太依赖于R的已有功能的算法,可以考虑学习使用Julia语言编写。Julia语…

    2023年12月16日
    21800
  • 为什么必须优先考虑最大限度地降低投资产品的成本?

    大家都知道投资产品的成本会降低净回报,并将成本视为选择投资构成客户投资组合的重要标准。但是顾问如何定义成本,以及与其他投资组合目标相比,降低成本有多重要? 在实践中,很少有顾问真正了解客户支付的全部费用,以及他们和客户因不必要的开支而损失了多少,通常每年损失 100 个基点或更多。最便宜的基金的表现始终优于昂贵的同类基金,为投资者创造更多财富,并为其顾问创造…

    2023年9月27日
    19800
  • 当美联储开始宽松时,市场反应积极

    期货市场预测美联储将在 2024 年某个时候降息。美联储通常会在经济疲软之前开始放松政策。但这对金融市场来说并不一定是坏消息。 截至 2023 年 8 月下旬,联邦基金期货市场预计美联储将在 2024 年中期某个时候开始降低政策利率。事实上,期货市场预计到 2024 年 12 月政策宽松(即降息)将接近 100 个基点 (bps)。 如下所示,美联储通常会在…

    2023年9月19日
    17000
  • 不要低头……

    2023年5月,芝加哥/香港 谚语“美在旁观者眼中”(源于美是客观存在还是主观概念的哲学争论)自公元前3世纪在希腊兴起后,风行至今。最终,该谚语为我们揭示了视角的微妙。正如2021年奥斯卡提名电影《不要抬头》完美捕捉到的那样:人们只看见他们愿意看见的,而对不想看见的闭上眼睛。荷兰著名艺术家埃舍尔是展示不同视角的大师。在他的作品和他的语录中:“事物是不确定的,…

    2023年7月18日
    24400
  • 平安银行信用卡支付宝怎么分期?(平安银行信用卡是怎么账单分期的?)

    在确认订单信息页面,勾选【信用卡分期】付款。

    2021年3月22日
    13800

发表回复

登录后才能评论
客服
客服
关注订阅号
关注订阅号
分享本页
返回顶部