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

相关推荐

  • RIA 友好的退休保障人寿保险策略(第二部分)

    在本系列的第一部分中,我承诺推出一项退休策略,其优点值得投资顾问界广泛采用。让我们深入研究这种方法的令人信服的案例。 图1 各方都同意:我们面临危机。 背景:未解决的危机 美国的退休保障危机引起了两党的关注,伯尼·桑德斯、本·卡森、伊丽莎白·沃伦、马可·卢比奥、兰德·保罗和帕蒂·默里等关键人物都强调了危机的紧迫性。甚至以 ChatGPT 为代表的人工智能也强…

    2024年4月3日
    28900
  • 北京大学R语言教程(李东风)第30章: R初等统计分析

    这一部分讲授如何用R进行统计分析, 包括基本概括统计和探索性数据分析, 置信区间和假设检验, 回归分析与各种回归方法, 广义线性模型, 非线性回归与平滑, 判别树和回归树, 等等。 主要参考书: 30.1 概率分布 R中与xxx分布有关的函数包括: dxxx(x)函数可以加选项log=TRUE, 用来计算\ln p(x), 这在计算对数似然函数时有…

    2023年11月19日
    22200
  • 比特币涨至 10 万美元标志着全球采用转变

    比特币涨至 10 万美元标志着全球采用的转变 由 U.S.全球投资者的弗兰克·霍尔姆斯,12/9/24 仅仅几年前(几个月?),很少有人会相信这是可能的。但这件事发生了:比特币首次交易价格超过 100,000 美元。 全球最大的数字资产(按市值计算)的普及率越来越高,已经不容忽视。我们不再谈论的是受科技爱好者青睐的神奇互联网货币。我们现在谈论的是一个严肃的金…

    2025年1月8日
    8500
  • 传统退休模式如何让客户损失数百万美元

    正如我在本文中所示,选择在退休时使用顾问将使客户及其受益人花费数百万美元的费用和机会成本。如果顾问仅将客户分配给传统的股票债券投资模式,而不实施任何实际的退休、投资规划或遗产规划解决方案,那么客户将永远无法收回这笔费用。基于资产管理规模的顾问经常使用“信托”一词,他们声称自己的行为符合客户的最佳利益,因为他们的收费模式使激励措施与客户的激励措施保持一致。这个…

    2023年10月21日
    16100
  • 如何投资自己以实现职业和财务增长?

    毫无疑问,你是你最大的资产。在考虑您的职业或财务计划时,将自己视为您最大的资产与选择正确的投资同样重要。持续、有意识地对自己进行投资可以帮助提高您的收入潜力,并陪伴您度过一生和职业生涯。您的“人力资本”可能包括您的: 教育 经验 训练 独特的技能 健康 激情 人格特质 还有更多。出于多种原因,投资自己可以真正有助于您在工作和生活中取得成功。一个例子可能是回到…

    2023年12月12日
    6900

发表回复

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