北京大学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语言教程(李东风)第20章: 研究项目管理

    执行一个数据分析研究项目,必须遵循一定的管理规则,才能事半功倍。 可重复式科学研究 现代科学研究之所以能被大众接受,成为主流世界观,很大程度上要归功于“可重复结果的试验”。现在生物、物理、化学等领域的科研越来越复杂,重复试验越来越难,但是不能重复的试验就备受争议。 数据分析项目也是这样,你的研究结果,一定要能够被第三方研究者所重复,要尽可能地提供详尽的代码和…

    2023年11月9日
    7500
  • 绝对回报货币策略,被低估的回报和多元化来源?

    绝对回报货币策略,被低估的回报和多元化来源? 执行摘要: 货币因子策略可以平衡股票和债券市场的动荡。我们的绝对回报货币策略 (ARCS) 是一种透明且基于规则的策略,可接触三个关键货币因子:套利、价值和趋势。 ARCS 与传统资产的相关性较低甚至为负,这使其有可能在不增加太多风险的情况下提高多资产投资组合的回报。 我们认为 ARCS 未来的回报前景看好。这是…

    2024年6月2日
    4500
  • 东芯半导体估值市值?(帝科股份估值方法,300842估值方法?)

    市值,是指一家上市公司的发行股份按市场价格计算出来的股票总价值,其计算方法为每股股票的市场价格乘以发行总股数。

    2023年5月27日
    57400
  • 不给糖就捣蛋? 小盘股市场中的多重投资者

    在阿加莎​​·克里斯蒂的悬疑小说《万圣节派对》中,一位可能目睹了谋杀案的年轻客人淹死在一个苹果摇动的篮子里。在错误的时间、错误的地点,不幸的聚会常客的命运就像不幸的投资者咬住一只亏损的股票并尝到后果的比喻。 橡树资本管理公司联席主席兼联合创始人霍华德·马克斯 ( Howard Marks, CFA)借鉴本杰明·格雷厄姆 (Benjamin Graham) 和…

    2023年11月22日
    9800
  • 通货膨胀会重演 20 世纪 70 年代的过山车吗?第2部分

    这是由三部分组成的系列中的第二部分。 第一部分强调了政府对充分就业的执着以及美联储对错误的菲利普斯曲线模型的信念如何助长了 20 世纪 70 年代的通货膨胀。我还谈到了 1971 年那决定命运的一天,当时尼克松总统取消了财政和货币束缚,实质上赋予了政府和美联储更多的权力来改变经济并引发通货膨胀。 我在第二部分开始更多地介绍美联储和国家的货币供应。虽然美联储和…

    2024年3月5日
    6000

发表回复

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