如果我有许多这样的文件:
[
每个文件夹中还有3个这样的文件:
[
现在每个文件夹中都有一个.txt文件,如下所示:
[
对于每个.txt文件,我都需要从文件中第6列中获取红色圆圈中的值,而我只对包含以下内容的行感兴趣,这些行包含cope1,cope2,cope3,cope4和cope5开始(以蓝色突出显示)。其他一切都可以忽略。
我需要分别显示每个文件夹的数据
应该是:
[
我需要从每个文件中读取相关数据并将其存储在合理的数据结构中。
我需要这样显示的所有数据,这样我才能获得FFA应付1的平均值-应付5 对于10个文件夹中的每个3个文件夹,依次类推。
在这里为冗长的问题python新手致歉!非常感谢所有帮助。
import os
import csv
import statistics
def main():
values = {}
ffaResults = {}
lingualResults = {}
ppaResults = {}
dir = os.path.join("fmriroi","roi_data")
subdirs = os.listdir(dir)
for subdir in subdirs:
subdirpath = os.path.join(dir,subdir)
subsubdirs = os.listdir(subdirpath)
for subsubdir in subsubdirs:
if subsubdir == "ffa":
dirpath = os.path.join(subdirpath,subsubdir)
files = os.listdir(dirpath)
for filename in files:
path = os.path.join(dirpath,filename)
with open(path,"r") as f:
content = csv.reader(f,delimiter=" ")
for row in content:
if "cope" in row[1]:
name = row[1].split("/")[1]
if not name in values:
ffaResults[name] = [float(row[6])]
else:
ffaResults[name].append(float(row[6]))
if subsubdir == "lingual_gyrus":
dirpath = os.path.join(subdirpath,delimiter=" ")
for row in content:
if "cope" in row[1]:
name = row[1].split("/")[1]
if not name in lingualResults:
lingualResults[name] = [float(row[6])]
else:
lingualResults[name].append(float(row[6]))
if subsubdir == "ppa":
dirpath = os.path.join(subdirpath,delimiter=" ")
for row in content:
if "cope" in row[1]:
name = row[1].split("/")[1]
if not name in ppaResults:
ppaResults[name] = [float(row[6])]
else:
ppaResults[name].append(float(row[6]))
res = {}
for k in ffaResults:
res[k] = statistics.mean(values[k])
print(res)
if __name__ == "__main__":
main()
输出:必填