Сохранить форматирование - PullRequest
0 голосов
/ 02 июля 2010

Я использую функцию для возврата текстового файла с разделителями табуляции и чтения, формат текстового файла:

1_0 NP_250397 100,00 140 0 0 1 140 1 140 6e-54 198

1_0 NP_250378 60,00 140 0 0 1 140 1 140 6e-54 198

1_0 NP_257777 70,00 140 0 0 1 140 1 140 6e-54 198

Мой код возврата:

def print_file(x):
    h = open('/home/me/data/db/test.blast', 'r')
    return h.readlines()

Но когда оно напечатано, оно выглядит так:

[ '1_0 \ tNP_250397 \ t100.00 \ T140 \ t0 \ t0 \ t1 \ T140 \ t1 \ T140 \ t6e-54 \ т 198 \ п», «1_0 \ tNP_250397 \ t100.00 \ T140 \ t0 \ t0 \ t1 \ T140 \ t1 \ T140 \ t6e-54 \ т 198 \ п», «1_0 \ tNP_250397 \ t100.00 \ T140 \ t0 \ t0 \ t1 \ T140 \ t1 \ T140 \ t6e-54 \ т 198 \ п ']

Есть ли способ вернуть файл, сохранив при этом форматирование?

Ответы [ 3 ]

2 голосов
/ 02 июля 2010

Если вы хотите, чтобы print_file фактически печатал файл, как подсказывает название функции,

def print_file(x):
    with open('/home/me/data/db/test.blast', 'r') as h:
        for line in h:
            print line

Если вы хотите вернуть содержимое файла в виде одной строки

def print_file(x):
    with open('/home/me/data/db/test.blast', 'r') as h:
        return h.read()

ЕслиВаш Python слишком стар, чтобы использовать оператор with

def print_file(x):
    return open('/home/me/data/db/test.blast', 'r').read()

В сторону: Вам может быть интересно узнать, что csv module может работать и с файлами с разделителями табуляции

0 голосов
/ 02 июля 2010

Когда вы распечатываете список, Python печатает список в неформатированном формате, который представляет, как он хранится внутри. Если вы хотите удалить скобки, запятые и кавычки и хотите расширить вкладки, вы должны распечатать каждую строку отдельно.

for line in print_file(x):
    print line

И не могли бы вы выбрать более подходящее имя для print_file, поскольку на самом деле оно ничего не печатает? Это добавляет немного когнитивного диссонанса, который не помогает вашей проблеме.

0 голосов
/ 02 июля 2010

return h.read() вернет содержимое файла в виде одной строки и, следовательно, "сохранит форматирование", если оно будет напечатано, как вы выразились. Какие еще ограничения существуют у возвращаемого значения с уникальным именем print_file (особенно на самом деле, потому что оно ничего не печатает !) ...?

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