Скрипт запуска Python для нескольких csv-файлов

#python #loops #csv #output

Вопрос:

Я пытаюсь запустить свой скрипт на нескольких файлах .csv и вывести результаты из каждого файла. Фрагмент моего кода выглядит следующим образом-

 import sys
import os
import logging
import subprocess
import argparse
import pandas as pd
import glob


files = glob.glob('/scratch/*/*.csv')

for file in files:
        df = pd.read_csv(file,delimiter = ',',skiprows=range(1,11))

#do some calculation on each file


#calculate the final value
metric = (max(max(dif_r1a),max(dif_r1c),max(dif_r1g),max(dif_r1t),max(dif_r2a),max(dif_r2c),max(dif_r2g),max(dif_r2t)))

#output the final value for each csv file
print(os.path.basename(file)   ' '   str(metric))
 

Вывод, который я получаю, предназначен только для одного csv-файла

 file1.csv 0.25
 

Как мне повторить это, чтобы вывести значение для всех csv-файлов ?

Спасибо

Комментарии:

1. Является ли код, который вы написали, точно таким, как вы опубликовали выше? Разве вы не хотели сделать отступ в остальной части кода, чтобы быть в for цикле?

Ответ №1:

Исходя из того, как это выглядит в приведенном выше коде, вы создаете фрейм данных для каждого файла .csv, но вычисляете только конечное значение и печатаете после выполнения цикла for. Если бы вы хотели сделать это для каждого кадра данных, они должны были бы находиться в цикле for:

 import sys
import os
import logging
import subprocess
import argparse
import pandas as pd
import glob


files = glob.glob('/scratch/*/*.csv')

for file in files:
        df = pd.read_csv(file,delimiter = ',',skiprows=range(1,11))

#do some calculation on each file


#calculate the final value
metric = (max(max(dif_r1a),max(dif_r1c),max(dif_r1g),max(dif_r1t),max(dif_r2a),max(dif_r2c),max(dif_r2g),max(dif_r2t)))

#output the final value for each csv file
print(os.path.basename(file)   ' '   str(metric))
 

Это то, что у вас есть на данный момент, но вы хотели бы изменить его на:

 import sys
import os
import logging
import subprocess
import argparse
import pandas as pd
import glob


files = glob.glob('/scratch/*/*.csv')

for file in files:
    df = pd.read_csv(file,delimiter = ',',skiprows=range(1,11))

    #do some calculation on each file


    #calculate the final value
    metric = 
    (max(max(dif_r1a),max(dif_r1c),max(dif_r1g),max(dif_r1t), 
    max(dif_r2a),max(dif_r2c),max(dif_r2g),max(dif_r2t)))

    #output the final value for each csv file
    print(os.path.basename(file)   ' '   str(metric))
 

Однако это также может быть связано с форматированием комментария.