![](/img/trans.png)
[英]how to load multiple files in a folder from s3 to Python Notebooks
[英]How to load multiple text files from a folder into a python list variable
我有一個充滿文本文檔的文件夾,其中的文本需要加載到單個列表變量中。
列表的每個索引,都應該是每個文檔的全文。
到目前為止,我有這段代碼,但效果不佳。
dir = os.path.join(current_working_directory, 'FolderName')
file_list = glob.glob(dir + '/*.txt')
corpus = [] #-->my list variable
for file_path in file_list:
text_file = open(file_path, 'r')
corpus.append(text_file.readlines())
text_file.close()
有一個更好的方法嗎?
編輯:用文本閱讀功能( readlines()
)替換了 csv 閱讀功能( read_csv
)。
您只需要read()
每個文件並將其附加到您的corpus
列表中,如下所示:
import glob
import os
file_list = glob.glob(os.path.join(os.getcwd(), "FolderName", "*.txt"))
corpus = []
for file_path in file_list:
with open(file_path) as f_input:
corpus.append(f_input.read())
print(corpus)
每個列表條目將是每個文本文件的全部內容。 請注意,使用readlines()
將為您提供每個文件的行列表,而不是原始文本。
file_list = glob.glob(os.path.join(os.getcwd(), "FolderName", "*.txt"))
corpus = [open(file).read() for file in file_list]
但是這種方法最終可能會占用更多資源,因為沒有with
部分可以自動關閉每個文件。
pathlib
模塊Path()
創建Path()
的pathlib
對象(或使用.cwd()
),並使用.glob
(或.rglob()
)查找與特定模式匹配的文件。
files = (Path().cwd() / 'FolderName').glob('*.txt')
/
用於將文件夾(擴展)添加到pathlib
對象。files = Path('./FolderName').glob('*.txt')
files = Path('e:/PythonProjects/stack_overflow/t-files/').glob('*.txt')
Path.read_text()
可用於將文本讀入list
,而無需使用.open()
。
text = [f.read_text() for f in files]
text = [f.open().read() for f in files]
text = [f.open().readlines() for f in files]
- 創建一個文本list
lists
。from pathlib import Path
# get the files
files = (Path().cwd() / 'FolderName').glob('*.txt')
# write the text from each file into a list with a list comprehension
text = [f.read_text() for f in files]
for-loop
替代方案files = Path('./FolderName').glob('*.txt')
text = list()
for file in files:
text.append(file.read_text())
Path.open()
和.read()
可用於打開文件文本並將其讀入列表。files = Path('./FolderName').glob('*.txt')
text = list()
for file in files:
with file.open() as f:
text.append(f.read())
我發現這是一種更簡單的方法:
import glob
corpus = []
file_list = glob.glob("Foldername/*.txt")
for file_path in file_list:
with open(file_path, 'r') as file_input:
corpus.append(file_input.read())
print (corpus)
import os
import shutil
import csv
import sys
csv_file = "card.csv"
with open(csv_file, 'r') as f:
reader = csv.reader(f)
for i, row in enumerate(reader):
if i == 0:
print(i)
pass # Skip header row
else:
filename,filepath,x,y,w,h = row
file2 = filename + ".txt"
file1 = open(file2,"a")#append mode
file1.write("%s\n%s\n%s\n%s\n" % (x, y, w,h))
file1.close()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.