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

相关推荐

  • 为什么说诞生50年的资产类别投资策略能帮到你?

    如今许多投资者认为,传统的指数投资——购买并持有一篮子股票和/或债券,以获取市场的总体回报减去小额费用——是最好的选择。试图通过主动管理(选择和时机)来预测市场是浪费时间,所以如果你不能打败它,就加入它。 传统指数化是一种很好的方法,当然比主动投资更好。所有的数据都证实了这一点。我们不认为指数化是最好的投资方式。为什么呢? 因为资产类别投资更好。 什么是资产…

    2023年11月9日
    22200
  • RILA:缓冲仍然比下限好得多

    注册指数挂钩年金(RILA),也称为指数变量年金和结构性年金,继续聚集大量资产。我最初在 2021 年 4 月为终生收入联盟发布了一篇论文,并在Advisor Perspectives中发表了一系列文章(请参阅此处、此处、此处和此处),探索 RILA。在一篇特别的文章中,我指出缓冲 RILA 显着比地面 RILA 更高效。考虑到此后市场状况的变化(例如债券收…

    2023年10月2日
    26100
  • 难以捉摸的阿尔法,腐蚀性成本

    1688 年,约瑟夫·德拉维加写道:“交易所的利润是妖精的宝藏。它们可能一度是红宝石,然后是煤炭,然后是钻石,然后是燧石,然后是晨露,然后是泪水。”他写的是当时阿姆斯特丹证券交易所的股票交易。他本可以写的是现代的阿尔法——投资者渴望获得的额外回报。由于缺乏公认的市场(资产定价)模型,学术界无法严格定义它。从经验上讲,由于统计噪声,即使我们使用自己选择的回报生…

    2024年10月17日
    13000
  • 管理情绪是成功成果的关键

    管理情绪是取得成功的关键 作者:Lee Grout,2025 年 11 月 17 日 顾问视角欢迎嘉宾投稿。本文所呈现的观点不一定代表顾问观点。 投资成功始于做出充分考虑投资者真实风险承受能力和时间范围的明智选择。保持投资并坚持有纪律的策略是实现投资目标的关键。最优秀的顾问在合作初期教育和建议投资者、在市场变化中保持联系,以及在情绪可能导致仓促决策时提供指导…

    2025年11月20日
    1200
  • 久期轮换:寻求更具弹性的投资组合

    作者:Rick Rieder 要点 美联储暂停加息的可能性为投资者提供了一个考虑将久期重新纳入投资组合的机会。 在这种市场体制下,我们认为久期可以很好地对冲和股票多元化。 在传统 60/40 投资组合中减持债券的顾问应考虑将债券恢复至基准水平或增持。 驾驭当今的环境只是数学 从 2022 年 3 月开始,美联储 (Fed) 以 1980 年以来最快的速度加息…

    2023年12月6日
    19600

发表回复

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