Python;Записать вывод в новый файл в формате Unix - PullRequest
0 голосов
/ 19 октября 2018

С помощью python я создаю файл с идентификаторами из нескольких файлов (базовые имена в этом коде)

ID = basename + ' ' + str(i) + ' ' + record.id 
with open('ID.out' ,'a', newline='\n') as ID_file: 
    ID_file.write(ID) 

Мой вывод выглядит так

Base1 1 ID1
Base1 2 ID2
Base2 1 ID1
Base2 2 ID2

В моем сценарии я хочуиспользовать этот файл и загрузить его в качестве кадра данных.Я использую следующий код

df = pd.read_csv('ID.out', header=None, sep=' ', names = ['base', 'number', 'ID'])

Однако, когда я делаю это, кадр данных читает не разные столбцы, он помещает все в один столбец

base / Base1 1 ID1Base1 2 ID2Base2 1 ID1Base2 2 ID2
number / Base1 1 ID1Base1 2 ID2Base2 1 ID1Base2 2 ID2
ID / Base1 1 ID1Base1 2 ID2Base2 1 ID1Base2 2 ID2

Я пытался установить новую строкупосле записи

ID = basename + ' ' + str(i) + ' ' + record.id + '\n'

И чем датафрейм выглядит нормально, но загружает только последние добавленные базы в df

  base  number ID
0 Base2 1      ID1
1 Base2 1      ID2

Как я могу изменить свой код в файле ID.outнаписано правильно, чтобы быть загруженным как dataframe?

1 Ответ

0 голосов
/ 19 октября 2018

write помещает в файл только ту строку, о которой вы говорите.Также явно укажите новую строку:

    ID_file.write(ID + '\n')

или используйте вместо нее print, которая поставляет новую строку в конце каждой записанной строки (если вы явно не укажете это иначе).

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