【问题标题】:R Studio-0.99.451: how to unzip folder and paste files into destination folderR Studio-0.99.451:如何解压缩文件夹并将文件粘贴到目标文件夹
【发布时间】:2017-11-20 17:14:13
【问题描述】:

我正在尝试提取(解压缩)文件夹(即“pakistan.zip”,其中包含 5 个文件 Pak_admin0.shp、Pak_admin0.shx、Pak_admin0.dbf、Pak_admin0.prj、Pak_admin0.qpj)并复制 .shp 文件, .shx, .dbf 文件从该文件夹到目标文件夹,使用 Rstudio 0.99.451 版本,代码如下:

for(j in list(".shp", ".shx", ".dbf"))
  {
  fname <- unzip(file=paste("pakistan", j, sep=""), zipfile= "pakistan.zip")
  file.copy(fname, paste("./pakistan", j, sep="/"), overwrite=TRUE)
}

unlink("pakistan.zip")

但它给了我以下错误

Warning messages: 
1: In unzip(file = paste("zupanije", j, sep = ""), zipfile = "pakistan.zip") :   requested file not found in the zip file 
2: In unzip(file = paste("zupanije", j, sep = ""), zipfile = "pakistan.zip") :   requested file not found in the zip file 
3: In unzip(file = paste("zupanije", j, sep = ""), zipfile = "pakistan.zip") :   requested file not found in the zip file

请提供任何可能的解决方案来处理此错误。 这些是我发现的实际代码,但 zip.file.extract 函数不再是 R 的一部分:

for(j in list(".shp", ".shx", ".dbf")){ 
fname <- zip.file.extract(file=paste("zupanije", j, sep=""), 
zipname="zupanije.zip") 
file.copy(fname, paste("./zupanije", j, sep=""), overwrite=TRUE) 
} 
unlink("zupanije.zip")

我想自动化从网站下载形状文件的结构并将其解压缩并放入另一个文件夹,然后使用 readShapePoly() 函数使用 ma​​ptools 库显示它.

【问题讨论】:

    标签: r rstudio geospatial


    【解决方案1】:

    您的代码适用于包含这些文件的 zip 文件。该错误表明这些文件不包含在 zip 文件中。既然您说您正在尝试提取“目录”,那么它们可能位于 zipfile 的子目录中?例如,如果我将文件放在“temp”目录中,然后创建该目录的 zip 文件,则必须将该目录添加到文件路径中,如下所示:

    f <- "test.zip"
    for(j in list(".shp", ".shx", ".dbf"))
    {
      # note "pakistan" directory added to path
      # unzip pakistan/zupanije.shp (or .shx or .dbf) out of test.zip
      fname <- unzip(file=paste("pakistan/zupanije", j, sep=""), zipfile= f)
      #copy extracted file to destination directory
      file.copy(fname, paste("./destination", j, sep="/"), overwrite=TRUE)
    }
    

    如果您在类似 Linux 的环境中,您可以尝试以下命令来检查 zip 文件并确保它包含您认为包含的内容以及您期望的路径:

    unzip -vl pakistan.zip

    顺便说一句,您的代码将输出文件“./pakistan/.dbf”、“./pakistan/.shx”和“./pakistan/.shp”。那是你要的吗?或者您是否需要“pakistan.shx”等,在这种情况下需要进行此更改:

    -file.copy(fname, paste("./pakistan", j, sep="/"), overwrite=TRUE)
    +file.copy(fname, paste("./pakistan", j, sep=""), overwrite=TRUE)
    

    【讨论】:

    • 你说得对,“pakistan”文件夹在压缩文件中包含一个同名“pakistan”的子目录,但我仍然无法成功执行代码。您的代码中的参数 zipfile=f 是什么。请您针对您的代码的每一行添加详细的 cmets。我不是 R 的专家用户。谢谢
    • 对不起。 f 是压缩文件名。我会编辑澄清。
    • 代码现在运行成功。我一直在做一个常见的错误,就是将文件的确切名称放在 zip 文件夹中(即,在我的情况下为 PAK_adm0.shp 文件),所以我必须在 fname
    • 我编写了以下代码,这些代码运行成功,但是这些代码在巴基斯坦文件夹中添加了 3 个额外的文件,分别以 .shp、shx 和 .dbf 命名。我需要从这个文件夹中获取的其他三个是 PAK_adm0.shp、PAK_adm0.shx 和 PAK_adm0.dbf。为什么创建其他三个只有扩展名文件的文件或如何摆脱它们。 for(j in list(".shp", ".shx", ".dbf")) { fname &lt;- unzip(file=paste("PAK_adm0", j, sep=""), zipfile= "PAK_adm_shp.zip", exdir="pakistan") file.copy(fname, paste("./pakistan", j, sep="/"), overwrite=TRUE) }
    猜你喜欢
    • 2013-12-29
    • 2016-04-20
    • 2016-01-05
    • 2010-09-05
    • 1970-01-01
    • 2017-04-18
    • 2021-10-16
    • 1970-01-01
    • 2019-05-07
    相关资源
    最近更新 更多