北京大学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

相关推荐

  • 投资组合再平衡,第 1 部分:理想的再平衡范围

    作者:布莱恩·考西 (Brian Causey),2023 年 10 月 28 日 执行摘要: 理想的再平衡范围因投资者而异,取决于投资者的风险承受能力和市场观点等因素。 在长期的股市牛市中,更广泛的再平衡范围将带来更高的回报,但也会增加投资组合的风险。 罗素投资在整个投资组合背景下交易实物和合成工具的灵活平台可以帮助客户确定他们首选的再平衡范围。对于希望保…

    2024年3月2日
    18300
  • 主动管理的错觉:尊重群体的智慧

    “我在这里的基本观点是,无论是金融分析师作为一个整体,还是投资基金作为一个整体,都不能指望‘击败市场’,因为在某种意义上,他们(或你)就是市场。 ” . . 金融分析师对投资和投机决策的整体影响越大,整体结果优于市场的数学可能性就越小。” —本杰明·格雷厄姆 金融史上的一个经久不衰的原则是,过去的解决方案往往会为未来的问题埋下种子。这种现象最出乎意料的例子是…

    2023年6月14日
    22500
  • 北京大学Julia语言入门讲义第1章: 基本使用

    介绍 Julia程序语言是一种计算机编程语言,就像C、C++、Fortran、Java、R、Python、Matlab等程序语言一样。Julia语言历史比较短,发布于2012年,是MIT的几位作者(Jeff Bezanson, Stefan Karpinski, Viral Shah, Alan Edelman)和全世界的参与者共同制作的。主网站在https…

    2023年8月12日
    58000
  • 获得投资视角并掌握储蓄艺术

    回忆过去的夏天 去年,有太多重大事件争夺我们的注意力……几乎每个投资者、几乎每年都这么说。 我们不会忽视今年的不确定性。通货膨胀是真实存在的,需要加以控制;我们也不能排除仍然会出现滞胀和/或衰退的可能性(尽管这两种情况都还没有发生)。股票和债券市场的市场波动加剧可能会让您再次怀疑这次是否有所不同。 但同样重要的是要记住,我们本质上倾向于更多地关注最近的警报而…

    2023年7月21日
    18500
  • 私人市场现实检查:第二部分

    这是我对私人市场基金绩效衡量的系列文章的第二部分,特别是关于使用内部收益率(IRR)衡量标准等同于投资回报率时遇到的困难。 在第一部分,我讨论了私人市场基金全球管理资产规模的增长,以及这种趋势可能是由于与传统投资相比预期回报率更高的感知所驱动的。我认为这种信念的根本原因在于对 IRR 的普遍使用以推断回报率,这是有问题的。 在这篇文章中,我将详细讨论 IRR…

    2025年1月14日
    10700

发表回复

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