我有一个全是csv文件的文件夹,其中包含了实验中不同参与者的结果。我正在尝试创建一个包含目录中所有csv文件的大型csv文件。我使用listdir()来创建所有文件的列表,但是我无法打开这个列表中的各个文件。我想我需要循环每一个文件,但我一直无法弄清楚如何。
这是我到目前为止想出的代码。我得到了以下错误: FileNotFoundError: Errno 2,没有这样的文件或目录:'results_262.csv‘,因为循环似乎只读取文件变量中的一个文件,尽管应该有很多文件。
from os import listdir
path = "results"
files = listdir(path)
print(files)
results = open("results.csv", "w")
data = []
for file in files:
participant = open(f"{file}", "r")
data.append(participant.readlines())有人能帮忙吗?
发布于 2022-11-06 15:56:52
您的问题是,listdir()返回文件名时没有它们的路径信息,因此需要将文件名附加到路径中。
import os
...
for file in files:
participant = open(os.join(path, file), "r"):
...其他详情:
f"{file}"和file是一样的。也就是说,open(file, "r")等同于open(f"{file}", "r"),但效率更高--不需要在变量中使用您已经拥有的值。
而且,你不能关闭你的文件。您应该在循环中添加participant.close(),或者更好地使用上下文管理器:
for file in files:
with open(os.join(path, file), "r") as participant:
...with将文件句柄放在上下文管理器中,当您离开上下文管理器的作用域时,文件将自动关闭。
https://stackoverflow.com/questions/74337084
复制相似问题