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

相关推荐

  • 预测房价的麻烦

    介绍 自 2021 年以来,一些国家的抵押贷款利率已增加了一倍或三倍。那么,为什么住宅房地产市场没有变得更加困难呢? 例如,英国的平均房价与收入之比高达惊人的 9 倍。这意味着大多数借款人将比以往更多的收入用于支付利息和摊销。英国抵押贷款的期限通常为五年,但新贷款的利率已从一年前的 1.8% 升至如今的 4.6%。许多借款人将无法在这个水平上进行再融资,并将…

    2023年9月8日
    19000
  • 央行黄金储备最多的20个国家(截至2024年8月)

    摘要 尽管今年迄今金价强劲上涨,但仍有几个因素可能导致金价上涨。 美元走弱和实际利率下降历来都是黄金的利好因素。 长期来看,各国央行可能会继续购买黄金。 经济增长放缓、央行放松政策以及政府赤字过大的环境可能会为金价提供额外支撑。 黄金价格 本地黄金价格溢价/折价 中国和印度最大的几个市场中的消费者根据本地的黄金价格作出购买决定。这些地区的当地金价往往偏离国际…

    2024年11月19日
    7700
  • 驾驭 2024 年宏观潮流

    由于美联储兑现了市场降息的希望,风险资产在 2023 年底大幅上涨。随着通胀降温,这种势头可能会持续一段时间。 上周股市下跌,债券收益率上升。表明美国工资粘性的数据表明了为什么我们认为市场对通胀的乐观情绪最终可能会落空。 本周美国消费者物价指数 (CPI) 可能会显示,2024 年商品价格下跌将导致通胀走低。我们认为供应限制将导致通胀坐过山车。 风险资产在 …

    2024年2月20日
    26600
  • 对冲基金抛售能源股,买入飙升的石油

    对冲基金抛售能源股,买入飙升的石油 作者:Natalia Kniazhevich,2024 年 4 月 18 日 随着能源类股票交易价格接近历史最高水平且油价也不断攀升,对冲基金认为他们已经找到了一种可以利用的交易方式:出售股票并将利润投入到购买更多原油。 高盛集团 (Goldman Sachs Group Inc.) 的经纪数据显示,对冲基金已连续三周抛售…

    2024年5月19日
    10500
  • 不断发展的国际大麻格局

    美国以外的大麻行业的发展格局与美国早期的发展阶段如出一辙,我们在本系列的上一篇文章中对此进行了概述。随着娱乐性大麻市场的兴起,消费者群体从日常爱好者(甚至可能自己种植大麻)扩大到更广泛的人群。在美国,来自不同背景的年轻人选择大麻而不是酒精来度过一个愉快的周六夜晚,而老年人则发现大麻在缓解疼痛和控制各种健康状况方面具有益处。 这些市场成熟度趋势预示着未来十年欧…

    2024年5月19日
    5200

发表回复

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