我有一个包含1000多个pdf文件的文件夹。它们中的一小部分无法打开(因为自动下载操作-在R中以“ wb”模式(win OS)在download.file中执行,以某种方式失败了)。我需要重新下载它们,但为此,我应该获取它们的列表。我怎样才能有效地获得它?
我成功地使用了半手动方法:使用for循环,我打印每个文件的名称,并在每个文件上使用pdf_info()尝试打开它。对于那些受错误影响的人,我会收到类似以下的多条错误消息:
PDF错误:找不到预告片字典
PDF错误:无效的XRef条目6796
PDF错误:无效的XRef条目408
PDF错误:无效的XRef条目6770
PDF错误:顶级页面对象的类型错误(空)
从100个文件中,我以此方式确定了受错误影响的0-2个文件(因为文件名打印在错误的前面)。但随后,我必须手动重新下载由此确定的每个文件。我想使用某种条件,以便在出现这样的错误时,将文件名添加到文件名的向量中。我只是不明白如何使用这种条件。
这就是我现在要做的:
library(pdftools)
files <- list.files(pattern = "pdf$")
for (i in 1:100){
print(i)
pdf_info(files[i])
}
我想更改for循环(或使用替代代码),以便能够收集损坏的pdf文件的名称。
答案 0 :(得分:0)
应该执行以下操作:
library(pdftools)
files <- list.files(pattern = "\\.pdf$")
for (file in files){
corruptedPdfs <- list()
tryPdfInfo <- tryCatch({
pdf_info(file)
}, error=function(e){e}
)
if(inherits(tryPdfInfo, "error")){
corruptedPdfs[[file]] <- file
}
}
print(corruptedPdfs)