如何自动获取文件夹中最近修改的 .txt 文件,将其转换为 .xlsx,并覆盖现有的 .xlsx 文件?
Posted
技术标签:
【中文标题】如何自动获取文件夹中最近修改的 .txt 文件,将其转换为 .xlsx,并覆盖现有的 .xlsx 文件?【英文标题】:How do I automatically take the most recently modified .txt file in a folder, convert it to .xlsx, and overwrite an existing .xlsx file? 【发布时间】:2022-01-16 12:42:07 【问题描述】:我正在尝试使用 R 来自动化 Excel 文档中的数据新鲜度,但我是编码新手并且遇到了麻烦。
这是场景:
每天早上,我都会将一个具有唯一名称(相同信息)的 .txt 文件存放在同一个文件夹中。它不会覆盖前一天的 .txt 文件,它只是创建一个新文件。
我希望使用 R 自动从文件夹中读取最新的 .txt 文件,将其转换为 .xlsx,并让它更新/覆盖现有的 .xlsx 文件。此 .xlsx 文件将作为仪表板的基础,因此同一个 .xlsx 文件从每天的 .txt 文件中获取新信息非常重要。
再一次,我对编码很陌生,所以我对如何编码没有最有根据的猜测,但下面是我最好的开始尝试:
require(readtext)
require(dplyr)
require(eeptools)
#Set Working Directory
setwd("G:\\My Drive\\Dashboards\\Text Files")
#Read latest text file
data_files <- file.info(Sys.glob("*.txt"))
row.names(data_files)[which.max(data_files[["ctime"]])]
有人确切知道我将如何编写这个代码吗?
提前感谢您的帮助。非常感谢!
【问题讨论】:
我会使用 Autoit 或 Python,因为我不熟悉 R。逻辑:删除旧文件。打开你的txt文件,转换它,用你的目标名称保存。完成。 【参考方案1】:你有一个好的开始。如果您确定ctime
将获得最新文件而不是mtime
(如果数据正在更新,这可能更适用),那么您已经完成了大部分数据读取问题。假设没有对文件进行其他更改,您可以将其读入 R,然后将其保存为 Excel 文件。我更喜欢对 Excel 文件使用 openxlsx
包,所以这就是我在这里使用的。
library(openxlsx)
file_dir <- "G:\\My Drive\\Dashboards\\Text Files\\"
files <- file.info(list.files(file_dir, ".txt", full.names = T))
my_dat_file <- rownames(files)[which.max(files$mtime)]
## this step may vary depending on the actual format of your data
mydat <- read.table(my_dat_file, header = T)
openxlsx::write.xlsx(mydat,
file = paste0(file_dir, "my_file_name.xlsx"),
overwrite = TRUE)
如果您希望自动化它并且您使用的是 Windows,您应该查看类似 taskscheduleR
(github here) 的包或设置您自己的任务,以便脚本每天自动运行而您不需要不必自己做。如果你使用的是 Linux,你可以试试cronR
【讨论】:
以上是关于如何自动获取文件夹中最近修改的 .txt 文件,将其转换为 .xlsx,并覆盖现有的 .xlsx 文件?的主要内容,如果未能解决你的问题,请参考以下文章