【问题标题】:R test if a file exists, and is not a directoryR测试文件是否存在,并且不是目录
【发布时间】:2018-02-19 05:38:23
【问题描述】:

我有一个将文件作为输入的 R 脚本,我想要一种通用的方法来了解输入是否是一个存在的文件,而不是一个目录。

在 Python 中你会这样做:How do I check whether a file exists using Python?,但我很难在 R 中找到类似的东西。

假设file.txt 确实存在,我想要如下所示:

input.good = "~/directory/file.txt"
input.bad = "~/directory/"

is.file(input.good) # should return TRUE
is.file(input.bad) #should return FALSE

R 有一个叫做 file.exists() 的东西,但这并不能区分文件和目录。

【问题讨论】:

    标签: r file directory


    【解决方案1】:

    解决方法是使用file_test()

    这提供了 shell 样式的文件测试,并且可以区分文件和文件夹。

    例如

    input.good = "~/directory/file.txt"
    input.bad = "~/directory/"
    
    file_test("-f", input.good) # returns TRUE
    file_test("-f", input.bad) #returns FALSE
    

    来自手册:

    用法

    file_test(op, x, y) 参数

    op 指定要执行的测试的字符串。一元 测试(仅使用 x)是“-f”(存在而不是目录), “-d”(存在和目录)和“-x”(可执行文件或 可作为目录搜索)。二进制测试是“-nt”(严格来说较新 比,使用修改日期)和“-ot”(严格比): 在这两种情况下,测试都是错误的,除非两个文件都存在。

    xy 提供文件路径的字符向量。

    【讨论】:

      【解决方案2】:

      在所有最新版本的 R 中都有一个dir.exists 函数。

      file.exists(f) && !dir.exists(f)
      

      【讨论】:

        【解决方案3】:

        您也可以使用fs 包中的is_file(path)

        【讨论】:

          猜你喜欢
          • 2014-04-01
          • 2011-12-04
          • 2014-01-12
          • 2014-09-23
          • 1970-01-01
          • 1970-01-01
          • 2011-04-17
          • 1970-01-01
          • 2011-02-16
          相关资源
          最近更新 更多