Создание каталогов из .txt файла

1

Я пытаюсь написать что-то в Python 2.7, чтобы создать много каталогов из.txt файла. До сих пор я получил это:

import os

path = '.'

system_name = open('systems.txt')
system = system_name.readline()
while system:	
	print(system)
	for system in system:
		os.mkdir(os.path.join(path,(system)))
	
system_name.close()

Мой входной файл выглядит следующим образом:

BaO_Fm-3m_26961_RPBE

BaZrO3_Pm-3m_90049_RPBE

BeO_P63mc_61181_RPBE

Bi2O3_P211c_15072_RPBE

CaMgSi2O6_C12c1_30522_RPBE

...

Проблема в том, что я получаю много папок, но все они создаются буквами по буквам из первой строки, а не по строкам, как я и предполагал.

Чем вы очень помогаете и наслаждаетесь своим днем,

Инго

Теги:
python-2.7

4 ответа

1

readline() читает одну строку. Затем вы перебираете эту линию, используя for system in system, поэтому вы получаете каждый символ по очереди.

Удобно, что файлы в Python уже можно повторить по строкам:

system_name = open('systems.txt')
for system in system_name:
    os.mkdir(os.path.join(path, system))
system_name.close()

Вы можете также смотреть в with конструкцией, чтобы сделать это исключение безопасным.

1

Попытайтесь открыть файлы с инструкцией with для большей безопасности. Кроме того, вы можете перебирать файл с циклом for, который даст вам все строки.

with open('systems.txt') as system_name:
    for line in system_name:
        print(line)
        line = line.strip() #to remove things like '\n'
        os.mkdir(os.path.join(path, line))
  • 0
    Привет, приятель, это меня тоже очень беспокоило: line = line.strip () # чтобы удалить такие вещи, как '\ n'
1

Проблема в том, что вы выполняете итерацию по первой строке вместо списка строк, чтобы создавать папки для каждого символа из первой строки. Вместо этого используйте readlines.

with open('systems.txt') as f:
    lines = f.readlines()
    for file_name in lines:
        os.mkdir(os.path.join(path, file_name))
0
import os

path = '.'

lines = tuple(open('systems.txt', 'r'))
print lines
for system in lines:
    os.mkdir(os.path.join(path,(system)))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню