如何解压一个文件,访问其中的所有文件夹和子文件夹,并创建一个数据帧?

2024-10-02 02:37:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个电子邮件数据集。数据集本身是2GB,它作为焦油.gz文件。当我在我的系统上提取它时,我得到一个名为“maildr”的文件夹。你知道吗

当我进入“maildr”文件夹时,我有一个文件夹列表,每个文件夹代表一个用户。当我点击一个代表用户的文件夹时,我会得到更多的子文件夹,如“收件箱”、“已发送邮件”、“已删除邮件”等

现在,当我点击“收件箱”时,我有一组包含实际电子邮件的文本文件。如何遍历文件夹和子文件夹,访问电子邮件,并创建相关的数据框架是一个问题。你知道吗

好消息是我发现了一个类似的解决方案,但这是在R中,我发现在python中做同样的事情很困难。你知道吗

if (!file.exists("enron_mail_20150507.tgz")) {
    untar("enron_mail_20150507.tgz")
}

emails <- list.files("maildir/", full.names = TRUE, recursive = 
TRUE)
emails <- emails[grep("/inbox", emails)]

Tags: 数据用户文件夹true电子邮件邮件mail代表
1条回答
网友
1楼 · 发布于 2024-10-02 02:37:06

我建议您为第一个文件夹创建一个数据帧。 然后您应该将所有数据帧附加到第一个文件夹。你知道吗

要为一个文件夹(例如邮箱文件夹)创建一个数据帧,请执行以下操作:

# Put in your mailbox path of the current user where the text files are saved
mypath = "home/archid/..../mailbox"
setwd(mypath)

# Create list of text files
txt_files_ls = list.files(path=mypath, pattern="*.txt") 
# Read the files in, assuming comma separator
txt_files_df <- lapply(txt_files_ls, function(x) {read.table(file = x, header = T, sep =",")})
# Combine them
combined_df <- do.call("rbind", lapply(txt_files_df, as.data.frame)) 

然后您需要读取所有文件夹并附加到第一个数据帧。您将需要for循环和append命令:添加.DataFrame.append. 你知道吗

另一种方法是创建一个bash脚本来读取每个文件夹,并为每个文件夹创建一个*.csv文件。然后您将合并所有csv文件。检查csv写入文件命令。你知道吗

相关问题 更多 >

    热门问题