Как перебирать папки перед желаемым документом? - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь написать скрипт, который будет собирать значения из файлов .xvg. У меня есть 20 папок, которые содержат целевой файл. Папки пронумерованы от 1 до 20 (в коде вы видите 1.Rimo)

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

rmsf = open('/home/alispahic/1.CB1_project/12.ProductionRun/1.Rimo/rmsf.xvg','r+')

for line in rmsf:   
    if line.startswith(' 4755'):
        print (line)
        l = line.split()
        print (l)       
        value = float(l[1])
        sum1 = float(sum1) + value
        print(len(l))
        print (sum1)

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Я решил проблему, добавив glob.

for name in glob.glob('/home/alispahic/1.CB1_project/12.ProductionRun/*/rmsf.xvg'):

    for line in open(name):
        if line.startswith(' 4755'):
0 голосов
/ 04 апреля 2019

Вы можете использовать os.listdir():

base_path = '/home/alispahic/1.CB1_project/12.ProductionRun'
file_name = 'rmsf.xvg'

for dir_name in os.listdir(base_path):
    print(dir_name)
    with open(os.path.join(base_path, dir_name, file_name)) as f:
        for line in f:
            # here goes your code
            pass

Просто не забудьте объединить dir_name с base_path (путь к каталогу, по которому вы перебираете).

Также обратите внимание, что это возвращает и файлы, а не только каталоги.Если ваша папка /home/alispahic/1.CB1_project/12.ProductionRun содержит только каталоги, это не будет проблемой;в противном случае вам нужно будет отфильтровать файлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...