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

相关推荐

  • 多元资产投资:追踪美国财政政策对增长的影响

    作者:AllianceBernstein 强劲的增长背景是跨资产配置的关键因素,受益于被压抑的需求和宽松的财政政策立场。 多资产策略利用不同资产类别的回报流,包括股票、债券、另类投资和期权。投资者对增长前景的看法是跨资产表现的一个共同点,因为它在推动风险偏好方面发挥着重要作用。 回顾过去,考虑到通货膨胀的逆风和数十年来最紧缩的货币政策,2023 年的经济增长…

    2024年1月10日
    8200
  • 只要给我 5%

    作者:Brian Schaefer 十年前,收益投资几乎是不可能的。 货币市场没有支付任何费用。标准普尔500指数的股息收益率为2%,10年期国债收益率徘徊在2%-3%之间。那些花了一辈子积累了几百万美元、期望靠收入生活的退休人员会对他们的财务顾问说:“只要给我 5%,这就是我生活所需要的。” 但任何诚实的顾问都必须解释说,达到 5% 的唯一方法是牺牲流动性…

    2024年1月14日
    7000
  • 持有退休计划的投资者面临的七大挑战

    计划退休的投资者面临七大挑战:股票估值处于历史高位;债券收益率处于历史低位;寿命延长以及对昂贵的长期护理的潜在需求;政府未能为社会保障和医疗保险计划提供全额资金;由于债务占国内生产总值的比率上升,经济增长可能放缓;对企业利润有利的有利因素(利率下降、利润增长快于 GDP 以及税率下降)的结束(甚至可能逆转)。 股票估值处于历史高位 从 1926 年到 202…

    2023年8月8日
    17200
  • 北京大学金融时间序列分析讲义第20章: 随机波动率模型

    本章内容来自自(Tsay 2013)§4.13和§4.14内容。 前面的波动率方程中σ2t=Var(at|Ft−1)都是被σt−1,…和at−1,…完全决定。另一种方法是假定σ2t的模型本身有新息,这样的模型称为随机波动率(Stochastic Volatility, SV)模型。模型写成 at=σtεt,(1−α1B−⋯−αmBm)lnσ2t=α0+vt.…

    2023年8月2日
    22400
  • 印度的能源博弈

    印度的能源博弈 由威廉布莱尔的伊恩·史密斯,5月16日 到2025年为止,市场已经有很多需要消化的内容:特朗普政府的关税、德国最新的投资承诺、深求时刻的影响,以及不断升级的军事冲突(现在包括印巴边境的冲突)。在这诸多事件中,有几件事情可能被忽视了——最值得注意的是,5月6日宣布的印度与英国之间的贸易协议。 经过三年的谈判后最终达成,这是英国自退出欧盟以来达成…

    2025年6月9日
    900

发表回复

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