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

相关推荐

  • 大流行性通货膨胀过山车 第3部分

    这是由四部分组成的系列中的第三部分。 本系列的第一部分以阿波罗全球管理公司的图表开头,暗示我们将在未来 10 年经历通货膨胀过山车,类似于 1965 年至 1982 年的经历。第一部分和第二部分解释了长期通货膨胀的原因和补救措施暴发。第三部分研究近期的大流行性通货膨胀。 历史教训已经过去,我们继续讨论最近由大流行引发的通货膨胀。这个总结让我们更好地体会现在和…

    2024年3月5日
    11700
  • 金融时间序列分析讲义第1 章:金融数据分析中的R软件介绍

    本课程的软件需求 课程采用Ruey S. Tsay的《金融数据分析导论:基于R语言》(An Introduction to Analysis of Financial Data with R)作为主要教材之一。课程讲述金融时间序列分析的各种模型,以及如何用R软件进行建模计算。 作为基础,学生需要重点掌握R软件如下功能: 基本数据类型,日期和日期时间类型,数据…

    2023年7月12日
    45500
  • 北京大学Julia语言入门讲义第25章: Julia编程示例–动态规划

    动态规划(dynamic programming)不完全是数学规划(最优化)问题的算法。它能解决如下问题:问题可以分解为子问题,子问题多次重复出现,就可以将已经出现的子问题记住,从而大大减小计算量。 Fibonacci数列 Fibonacci数列满足 F0=F1=1, Fn=Fn−1+Fn−2, n=2,3,…。 显然,可以写成简单的递归函数: functi…

    2023年9月6日
    21400
  • 美联储警告:股市时代的终结

    投资者不会愿意为看似低于平均水平的利润增长付出高于平均水平的估值。

    2023年7月12日
    24200
  • “Smart Beta”怎么会犯严重错误呢?

    关键点 扣除估值水平变化后的因子回报率远低于近期表现所显示的水平。 增值可以是结构性的,因此可以可靠地重复,也可以是情境性的——估值上升的产物——可能既不可持续也不可重复。 许多投资者都是业绩追逐者,他们在推高价格的过程中创造了估值水平,从而夸大了过去的业绩,降低了未来的潜在业绩,并放大了均值回归到历史估值常态的风险。 我们预见到,由于因子倾斜策略的迅速普及…

    2023年12月23日
    15500

发表回复

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