我想读取文件夹/目录中每个文件的内容,然后在最后打印它们(我最终想从各个文件中挑选出一些碎片并将它们放在一个单独的文档中) 到目前为止,我有这个代码
import os
path = 'results/'
fileList = os.listdir(path)
for i in fileList:
file = open(os.path.join('results/'+ i), 'r')
allLines = file.readlines()
print(allLines)
最后我没有得到任何错误,但它只打印我的文件夹中的一个字符串中的最后一个文件的内容,我想确保它读取每个文件,以便我可以从每个文件访问我想要的数据文件。我在网上看了,我找不到我错的地方。有没有办法确保循环迭代我的所有文件并阅读所有文件?
当我使用
时,我也得到相同的结果 file = open(os.path.join('results/',i), 'r')
在第5行
请帮助我迷失方向 谢谢!
答案 0 :(得分:1)
你忘记了这一行的缩进allLines = file.readlines()
也许你可以试试:
import os
allLines = []
path = 'results/'
fileList = os.listdir(path)
for file in fileList:
file = open(os.path.join('results/'+ i), 'r')
allLines.append(file.read())
print(allLines)
答案 1 :(得分:0)
from pathlib import Path
import sys
source_dir = Path('results/')
files = source_dir.iterdir()
如果您只需要扩展名为.ext
files = source_dir.glob('*.ext')
def process_files(files):
for file in files:
with file.open('r') as file_handle :
for line in file_handle:
# do your thing
yield line
def save_lines(lines, output_file=sys.std_out):
for line in lines:
output_file.write(line)
答案 2 :(得分:0)
这也会创建一个包含您要打印的所有文件的文件。
rootdir= your folder, like 'C:\\Users\\you\\folder\\'
import os
f = open('final_file.txt', 'a')
for root, dirs, files in os.walk(rootdir):
for filename in files:
data = open(full_name).read()
f.write(data + "\n")
f.close()
这是一个类似的案例,有更多功能:Copying selected lines from files in different directories to another file
答案 3 :(得分:0)
您忘记缩进此行allLines.append(file.read())
。
因为它位于循环之外,所以只有file
循环完成后才会将for
变量附加到列表。所以它只附加循环后剩余的file
变量的最后一个值。此外,您不应以这种方式使用readlines()
。只需使用read()
代替
import os
allLines = []
path = 'results/'
fileList = os.listdir(path)
for file in fileList:
file = open(os.path.join('results/'+ i), 'r')
allLines.append(file.read())
print(allLines)