利用R语言批量创建、移动、删除、修改文件

1.如何获取和更改当前工作目录

# 获取当前目录
getwd()

# 设置工作目录
setwd(“C:/Users”)

2.创建文件和目录

可以使用dir.create函数在R中创建一个新文件夹或目录,如下所示:

dir.create(“new_folder”)

利用file.create功能创建空白文件

file.create(“new_text_file.txt”)
file.create(“new_word_file.docx”)
file.create(“new_csv_file.csv”)

考虑到这一点,快速创建大量文件变得容易。 例如,下面的代码将创建100个空文本文件:

sapply(paste0(“file”, 1:100, “.txt”), file.create)

3.复制文件/文件夹

file.copy(“source_file.txt”, “destination_folder”)

4.如何列出目录中的所有文件

用R列出目录中所有文件的最简单方法是调用list.files

#列出当前目录中的所有文件
list.files()
#列出另一个目录中的所有文件
list.files(“ C:/ path/to /somewhere / else”)

列出所有子文件夹中的文件

list.files(“C:/path/to/somewhere/else”, recursive = TRUE)

运行默认的list.files不会列出文件的完整路径名。我们可以将参数full.names设置为TRUE,以获取完整的路径名。

list.files(“C:/path/to/somewhere/else”, full.names = TRUE, recursive = TRUE)

list.files还可以将过滤器应用于要列出的文件。例如,下面的R代码将列出目录中的所有CSV文件

#以非递归方式列出所有CSV文件

list.files(pattern = “.csv”)

如果要读取给定目录中的所有CSV文件,以上逻辑可能非常有用。例如,假设您在一个文件夹中有一个CSV列表,并且您想从所有文件中生成一个数据框(假设它们各自具有相同的布局)。您可以通过几行代码来完成此操作:

# read in all the CSV files
all_data_frames <- lapply(list.files(pattern = “.csv”), read.csv)

# stack all data frames together
single_data_frame <- Reduce(rbind, all_data_frames)

5.如何获得创建/修改文件的时间以及有关的其他详细信息

fileSnapshot在目录中获取文件的另一种方法是使用函数fileSnapshot。 fileSnapshot还将为您提供有关文件的其他详细信息。 此函数返回对象列表。

# get file snapshot of current directory
snapshot <- fileSnapshot()

# or file snapshot of another directory
snapshot <- fileSnapshot(“C:/some/other/directory”)

fileSnapshot返回一个列表,在这里我们仅将其称为“快照”。 通过引用“ info”可以从中获得最有用的信息:

size==>文件大小
isdir ==>是文件目录吗? ==> TRUE或FALSE
mode==>八进制的文件权限
mtime ==>上次修改的时间戳
ctime ==>时间戳创建
atime ==>上次访问的时间戳
exe ==>可执行文件的类型(如果不是可执行文件,则为“否”)

file.info
file.info与fileSnapshot相似,区别在于它返回与输入文件相对应的信息的单个记录。 例如,下面的代码将返回特定文件“ some_file.csv”的上面的字段(大小,isdir,模式,mtime等):

file.info(“some_file.csv”)

file.ctime(“C:/path/to/file/some_file.txt”)

file.mtime(“C:/path/to/file/some_file.txt”)

6.如何删除文件
可以使用R使用取消链接删除文件。删除单个文件就像将文件名传递给此函数一样简单。要删除目录,您必须添加参数recursive = TRUE。

# delete a file
unlink(“some_file.csv”)

# delete another file
file.remove(“some_other_file.csv”)

# delete a directory — must add recursive = TRUE
unlink(“some_directory”, recursive = TRUE)

sapply(paste0(“file”, 1:100, “.txt”), unlink)

7.检查文件是否存在

file.exists(“ C:/path/to/file/some_file.txt”)

#检查文件夹是否存在
file.exists(“C:/path/to/file/some_folder”)
#或者,检查是否存在带有dir.exists的文件夹
dir.exists(“C:/path/to/file/some_folder”)
无论现有文件是否为目录,运行file.exists都将返回TRUE,而仅当输入值存在且为目录时,dir.exists才会返回TRUE。

8.如何获取文件扩展名

可以使用工具包中的file_ext函数来获取文件扩展名。

library(tools)

file_ext(“C:/path/to/file.txt”) # returns “txt”

file_ext(“C:/path/to/file.csv”) # returns “csv”

9.如何运行打开文件

要打开或启动文件,请使用shell.exec或file.show函数:

# use shell.exec…
shell.exec(“C:/path/to/file/some_file.txt”)

# or file.show to launch a file
file.show(“C:/path/to/file/some_file.txt”)

10.如何打开文件选择窗口

要打开文件选择窗口,可以运行file.choose()

file.choose()运行此命令将返回用户选择的文件的名称。

11.如何移动文件

在撰写本文时,尚没有内置的基本R函数将文件从一个位置直接移动到另一个位置,但是可以使用filesstrings包及其函数file.move来实现:

library(filesstrings)
file.move(“C:/path/to/file/some_file.txt”, “C:/some/other/path”)

利用R语言批量创建、移动、删除、修改文件

原创文章,作者:bio,如若转载,请注明出处:https://www.ouq.net/%e5%88%a9%e7%94%a8r%e8%af%ad%e8%a8%80%e6%89%b9%e9%87%8f%e5%88%9b%e5%bb%ba%e3%80%81%e7%a7%bb%e5%8a%a8%e3%80%81%e5%88%a0%e9%99%a4%e3%80%81%e4%bf%ae%e6%94%b9%e6%96%87%e4%bb%b6.html