北京大学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语言教程(李东风)附录A:R Markdown文件格式

    附录A-D的内容现在已经升级为Quarto(第22章)内容,这些内容放在这里备查。 R Markdown文件 借助于R的knitr和rmarkdown扩展包的帮助,可以在Markdown格式的源文件中插入R代码,使得R代码的结果能够自动插入到最后生成的研究报告中。这种格式称为R Markdown格式,简称为Rmd格式,相应的源文件扩展名为.Rmd。输出格式可…

    2023年12月23日
    13300
  • 关于量化筛选基金经理的三个维度,选择基金经理的量化指标

    评估投资经理是一项具有挑战性的工作。否则为什么资产所有者会花费如此多的时间和资源(通常是在顾问的帮助下)来进行经理人搜寻?正确的经理选择和评估需要彻底的尽职调查,但相对简单的问题可以作为潜在投资经理的有用的初始考察。 在开始与量化经理进行尽职调查之前,资产所有者应该向该经理询问三个基本问题。如果经理没有提供足够的答复,他们可能不值得进一步考虑。尽管我们的重点…

    2023年7月4日
    23100
  • 在高度分散的世界中释放阿尔法机遇

    作者: Rich Mathieson,Christopher DiPrimio,24 年 3 月 6 日 关键点 离散度上升:从长期停滞状态向通货再膨胀状态的转变,不仅导致全球盈利增长扩大,而且导致公司业绩和业绩的离散度显着提高。 阿尔法优于贝塔:除了加剧分散性之外,新制度可能会抑制近几十年来的整体市场表现。这反映出机会集有利于阿尔法回报来源而不是贝塔回报来…

    2024年3月20日
    4200
  • 从ETF走势看美股可选消费与必选消费变化?

    作者:Roxanna Islam 尽管经济出现一些放缓迹象,但市场上最大的故事仍然围绕着大型科技公司的盈利和人工智能。七大股票涵盖科技、通信和非必需消费品:科技领域的微软[MSFT]、苹果[AAPL]和英伟达[NVDA] ;通信领域的元平台 [META]和Alphabet [GOOG];以及非必需消费品领域的亚马逊 [AMZN]和特斯拉 [TSLA] )。 …

    2023年11月5日
    8200
  • 如何确保您的职业生涯不会过时:T 型技能

    提高我们的技能可以促进我们的职业发展,这是一条合乎逻辑的真理。然而,挑战在于知道我们的个人发展应该集中在哪里,才能获得最大的利益。《投资管理工作的未来:技能与学习》研究报告指出了当前投资行业技能供需的差距,强调了该行业颠覆的根源,并探讨了它们之间的交叉点。因此,它为如何最好地推动我们的职业发展提供了路线图。 发展领域 该报告将投资管理分为四个技能类别: 技术…

    2023年7月23日
    13900

发表回复

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