如何使用Python读取文件夹中的多个文本文件?

时间:2019-07-19 11:09:56

标签: python pandas io file-handling

我在SO上以及与读取文件夹中的文本文件有关的其他平台上查看了多个问题和答案,但不幸的是,目前似乎没有一种对我有用。我的文件夹中有多个文本文件,想全部读取,然后将每个文本文件作为字符串放入新列表new_list中。

path = "MyNews_AccidentDataset/News_txt.txt"
all_files = os.listdir(path)

使用此命令可以将我all_files列为具有所有文本文件名称的列表

 '0185_Man dies after 100ft turbine fall  .txt',
 '0131_Deaths_from_Working_with_Wind_Energy - Copy (5) - Copy.txt',
 '0001_BENDING_WITH_THE_WIND._Modern_Power_System_N.txt']
.......

但是,当我使用open()来读取文件时,

new_list = []
    for fle in all_files:
       # open the file and then call .read() to get the text
       with open(fle) as f:
          text = f.read()
          new_list.append(text)

我收到以下错误:-

with open(fle) as f:
FileNotFoundError: [Errno 2] No such file or directory: '0106_Car_vehicles_part_falls_on_the_roadway.txt'

尽管提到的文件存在于文件夹中。

在这方面的任何帮助都将受到赞赏。

编辑 使用完整的路径,如@bexi的建议注释

for fle in all_files:
   # open the file and then call .read() to get the text
   with open(os.path.join(path, fle)) as f:
      text = f.read()

3 个答案:

答案 0 :(得分:1)

基于其他一些评论和答案,我得到了VARCHAR(MAX)。最后,我可以通过将读取模式设置为二进制UnicodeDecodeError: 'ascii' codec can't decode byte 0x93 in position 643: ordinal not in range(128)而不是"rb"来成功解决此问题:-

"r"

答案 1 :(得分:0)

为避免遇到路径问题,尤其是在要在不同平台(UNIX与Windows等)上使用代码的情况下:

from pathlib import Path
path = Path("MyNews_AccidentDataset/")
all_files = [path / f for f in os.listdir(path) if '.txt' in f] # note: if statement to only get .txt files

答案 2 :(得分:0)

我想所有文件都以.txt结尾:

new_list = []
for root, dirs, files in os.walk(<path to your folder>):
    for file in files:
        if file.endswith('.txt')
            with open(os.path.join(root, file), 'r') as f:
                text = f.read()
                new_list.append(text)