如何在文件夹python中打开和读取文本文件

时间:2019-12-04 16:08:23

标签: python list directory

我有一个包含文本文件的文件夹。我希望能够放置该文件的路径,并让python遍历该文件夹,打开每个文件并将其内容附加到列表中。

import os

folderpath = "/Users/myname/Downloads/files/"
inputlst = [os.listdir(folderpath)]
filenamelist = []

for filename in os.listdir(folderpath):
    if filename.endswith(".txt"):
        filenamelist.append(filename)

print(filename list)

到目前为止,此输出:

['test1.txt', 'test2.txt', 'test3.txt', 'test4.txt', 'test5.txt', 'test6.txt', 'test7.txt', 'test8.txt', 'test9.txt', 'test10.txt']

我想让代码获取每个文件,打开它们并将其所有内容放入一个巨大的列表中,而不仅仅是打印文件名。有什么办法吗?

3 个答案:

答案 0 :(得分:1)

如果您使用的是Python3,则可以使用:

for filename in filename_list :
    with open(filename,"r") as file_handler :
        data = file_handler.read()

请注意,您将需要filename

中文件的完整(相对或绝对)路径。

这样,当您离开with范围时,文件处理程序将自动关闭。 有关此处的更多信息:https://docs.python.org/fr/3/library/functions.html#open

顺便说一句,为了列出文件,您可能想看看glob并使用:

filename_list = glob.glob("/path/to/files/*.txt")

答案 1 :(得分:0)

为此,您应该使用文件打开。 在此处阅读有关其advanced options

的文档

无论如何,这是一种实现方法:

import os

folderpath = r"yourfolderpath"
inputlst = [os.listdir(folderpath)]
filenamecontent = []

for filename in os.listdir(folderpath):
    if filename.endswith(".txt"):
        f = open(os.path.join(folderpath,filename), 'r')
        filenamecontent.append(f.read())

print(filenamecontent)

答案 2 :(得分:0)

您可以使用fileinput

代码:


import fileinput

folderpath = "your_path_to_directory_where_files_are_stored"
file_list = [a for a in os.listdir(folderpath) if a.endswith(".txt")]
# This will return all the files which are in .txt format

get_all_files = fileinput.input(file_list)

with open("alldata.txt", 'ab+') as writefile:
    for line in get_all_files:
        writefile.write(line+'\n')

以上代码将从指定目录( folderpath )的.txt中读取所有数据,并将其存储在 alldata.txt 中,因此,您想有这么长的列表,现在可以根据需要将该列表存储在.txt文件中,否则可以删除写入过程。

链接:

https://docs.python.org/3/library/fileinput.html

https://docs.python.org/3/library/functions.html#open