我有一个充满文本文件的文件夹。我想使用python将所有这些文本文档加载到单个列表变量中。列表变量应将每个文本文档作为项目。
到目前为止,我有这个代码,但它不能正常工作。
$user_save_obj = User::Create([
'user_email' => $data['user_email'],
'user_password' => bcrypt($data['user_password']),
'first_name' => 'John',
'last_name' => 'Doe',
'department_id' => 1,
'user_level' => 1,
'create_date' => Carbon::now('Asia/Jakarta')
])
$last_inserted_id = $user_save_obj->id;
$user_update_obj = User::find($last_inserted_id);
$user_update_obj->created_by = $last_inserted_id;
$user_update_obj->save();
有更好的方法吗?
编辑:用文本阅读功能(readlines())替换了csv阅读功能(read_csv)。
答案 0 :(得分:1)
您只需要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()
会为您提供每个文件的行列表,而不是原始文本。
答案 1 :(得分:1)
pathlib
模块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())
答案 2 :(得分:0)
我发现这是一种更简单的方法:
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)
答案 3 :(得分:-1)
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()