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

相关推荐

  • 现在的通货膨胀不会是 1970 年代情况的重演

    作者:,Lantern Capital LLC 去年通货膨胀(总体 CPI)达到 9.1%(现为 3.2%),工会劳工协议正在谈判,以及最近受赎罪日战争启发的哈马斯对以色列的袭击,与 1970 年代有足够多的相似之处,令人怀疑未来是否将带来高通胀和高利率。但创造那个时代的经济条件现在已经大不相同,并表明通货紧缩和较低的利率将持续下去。以下是 1970 年通货…

    2023年12月19日
    3900
  • 北京大学Julia语言入门讲义第15章: 统计计算

    这一部分介绍如何靠自己编写Julia程序进行定制化的统计计算。从自己编写程序作统计计算的角度简单介绍Julia中与统计计算编程有关的功能,如向量、矩阵计算,最优化,随机模拟,并行计算等。 Julia比较适合用作数值计算,编程既有Python、R、Matlab这样的语言的简洁,又有C++这样的编译语言的运行效率。统计数据分析、作图需要用到许多复杂的算法,有些算…

    2023年8月28日
    29700
  • 分析疫情过后的美国经济

    作者:尤金尼奥·阿莱曼 (Eugenio Aleman)、Giampiero Fuentes,24/4/5 首席经济学家 Eugenio Alemán 和经济学家 Giampiero Fuentes 指出,虽然他们预计经济增长将放缓,但他们并不认为 2024 年会出现经济衰退。 我们通常不愿意用时髦的短语来解释我们对美国经济的好坏判断。然而,今天说“这一次不…

    2024年5月16日
    3300
  • 对冲基金抛售能源股,买入飙升的石油

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

    2024年5月19日
    5000
  • 沃伦巴菲特对日本贸易公司的大赌注有助于推高分析师目标

    在伯克希尔哈撒韦公司表示进一步将其在这些公司的持股比例进一步提高至平均超过 8.5% 之后,包括五家最大贸易公司在内的全国东证批发贸易指数成为周二表现最佳的板块。

    2023年6月20日
    10400

发表回复

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