如何快速将file.info()的size元素从字节转换为KB,MB,GB等?

时间:2015-04-22 03:54:15

标签: r

我希望在stackoverflow上已经有了这个答案,我根本找不到它。

期望的结果:快速将file.info()调用中的文件大小元素从字节转换为KB,MB等。如果输出是i)字符串,我很好具有所需的大小类型,例如"96 bytes"或ii)简单的数字转换,例如,从60963字节到60.963 KB(每Google)。

Repro步骤:

  1. 创建一个文件夹来存储文件:

    dir.create("census-app/data")
    
  2. 下载文件(约60KB):

    download.file("http://shiny.rstudio.com/tutorial/lesson5/census-app/data/counties.rds",
    "census-app/data/counties.rds")
    
  3. 使用file.info()$size以字节为单位返回文件大小:

    file.info("census-app//data//counties.rds")$size
    [1] 60963
    
  4. 从那里,我被卡住了。我意识到我可以做一些复杂/手动的解析和计算来进行转换(参见Converting kilobytes, megabytes etc. to bytes in R)。

    但是,我希望我可以简单地使用基本功能或类似的东西:

        format(file.info("census-app//data//counties.rds")$size, units = "KB")
        [1] "60963"
        # Attempt to return file size in KB simply returns the size in bytes
        # NOTE: format(x, units = "KB") works fine when I
        # pass it object.size() for an object loaded in R
    

1 个答案:

答案 0 :(得分:31)

object.size()函数为其结果执行此类格式化,但它的目的是告诉您传递给它的R对象的大小。它没有设置为任意值。

但是,我们可以“窃取”它的一些格式化逻辑。你可以用

来调用它
utils:::format.object_size(60963, "auto")
# [1] "59.5 Kb"

通过这种方式,我们可以调用未导出的格式化函数。您可以在?format.object_size帮助页面上显示其他格式选项。请注意,它使用1 Kb = 1024字节的规则(在您的示例中不是1000)。

相关问题