You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用startswith函数不指定全名从下载文件夹导入Zip文件

问题描述

我的下载文件夹中有一个Zip文件,其中包含名为“Query Transaction History_20221121040329_01.xls”的文件。此前我用以下代码手动指定完整文件名来解压导入:

unzip(zipfile = "C:/Users/Guest 1/Downloads/Query Transaction 
        History_20221121040329_42118.zip",
                    files = "Query Transaction History_20221121040329_01.xls", exdir=".")

我希望不用指定完整文件名,用R语言base包的startswith()函数或其他合适方法实现自动匹配解压,预期能像下面这种简化形式的代码一样工作:

unzip(zipfile = "C:/Users/Guest 1/Downloads/Query Transaction 
                History_20221121.zip",
                            files = "Query Transaction History_20221121.xls", exdir=".")
解决方案

可以通过以下步骤实现自动匹配文件名解压:

  • 第一步:先用unzip()的list = TRUE参数获取Zip包内的所有文件列表
  • 第二步:用startswith()筛选出以目标前缀开头的文件
  • 第三步:将筛选出的文件名传入unzip()完成解压

具体代码如下:

# 定义Zip文件路径
zip_path <- "C:/Users/Guest 1/Downloads/Query Transaction History_20221121040329_42118.zip"

# 获取Zip包内的所有文件列表
zip_files <- unzip(zip_path, list = TRUE)$Name

# 筛选出以"Query Transaction History_20221121"开头的文件
target_file <- zip_files[startswith(zip_files, "Query Transaction History_20221121")]

# 解压目标文件
unzip(zipfile = zip_path, files = target_file, exdir = ".")

补充说明

  • 如果Zip包内符合前缀的文件不止一个,target_file会是一个向量,此时unzip()会把所有符合条件的文件都解压出来
  • 也可以用grepl()配合正则表达式来匹配,比如:
target_file <- zip_files[grepl("^Query Transaction History_20221121", zip_files)]

效果和startswith()一致,适合更复杂的匹配场景

内容的提问来源于stack exchange,提问作者Yomi.blaze93

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:20:32