如何自动获取文件夹中最近修改的 .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 文件?的主要内容,如果未能解决你的问题,请参考以下文章

易语言 如何 列出 指定目录下 所有 文件名

Bat如何替换文件内容?

Bat如何替换文件内容?

SQL...如何将表查询的结果自动保存到*.txt文件中?

SQL...如何将表查询的结果自动保存到*.txt文件中?

如何修改文件名