首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不同的文件夹中打开文本文件并写入csv单元格

在不同的文件夹中打开文本文件并写入csv单元格
EN

Stack Overflow用户
提问于 2021-07-08 23:58:55
回答 2查看 419关注 0票数 1

我试图从不同的文件夹中获取文本,并以CSV格式将每个文本写入一个带有文件名(*.txt)的单元格中。

代码语言:javascript
复制
import os
folders = os.listdir("/Users/hilo/Documents/digitization/ReleasedDataset_mp3")
folders

import  glob, csv

在这里,我试图获取文件夹名称的列表,它们如下:

代码语言:javascript
复制
['Becton Dickinson_20170803',
 'CIGNA Corp._20170202',
 'The Bank of New York Mellon Corp._20170720',
 'JPMorgan Chase & Co._20170714']

在这里,我尝试应用一个循环来打开和提取每个*txt文件中的所有文本,并使用( *)键将所有文本写入csv文件中的一个单元格中。

代码语言:javascript
复制
for i in folders:
    files=glob.glob("/Users/hilo/Documents/digitization/ReleasedDataset_mp3/i/*.txt")
with open('writeData.csv', mode='w') as new_file:
  writer = csv.writer(new_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
  for filename in files:

    # Take all sentences from a given file
    file = open(filename, 'rt')
    text = file.read()
    file.close()

    for text in text:
      writer.writerow((filename, text))

这会产生一个空的CSV。有没有人建议解决代码中的问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-09 17:33:02

根据你在评论中提供的补充资料,我认为这是可行的:

代码语言:javascript
复制
import csv
import glob
import os
from pprint import pprint, pp


#root_folder = "/Users/hilo/Documents/digitization/ReleasedDataset_mp3"
root_folder = "/Stack Overflow/_test_files_root"

#folders = ['Becton Dickinson_20170803',
#           'CIGNA Corp._20170202',
#           'The Bank of New York Mellon Corp._20170720',
#           'JPMorgan Chase & Co._20170714']
folders = ['Subfolder1', 'Subfolder3']

filepaths = []
for subfolder in folders:
    filepaths.extend(glob.glob(os.path.join(root_folder, subfolder, "*.txt")))

if os.name == 'nt':  # Improve readability on Windows (optional)
    filepaths[:] = [filepath.replace('\\', '/') for filepath in filepaths]
pprint(filepaths, width=128)  # Show files to be processed (optional)

# Process the files.
with open('writeData.csv', mode='w', newline='') as new_file:
    writer = csv.writer(new_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
    for filename in filepaths:
        # Take all sentences from a given file.
        with open(filename, 'rt') as file:
            text = file.read()
        # Write them into CSV along with filename.
        writer.writerow((filename, text))

print('-FINI-')

在Excel中创建的文件如下所示:

(我使用了各种在线新闻文章的文本进行测试。)

票数 1
EN

Stack Overflow用户

发布于 2021-07-09 00:03:37

您错过了第2行的字符串插补。

应该是files=glob.glob(f"/Users/hilo/Documents/digitization/ReleasedDataset_mp3/{i}/*.txt")

现在,它将替换循环中的i值,而不是将其解释为文字值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68309791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档