2010-07-01 3 views
0

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

1_0 NP_250397 100,00 140 0 0 1 140 1 140 ого-54 198

1_0 NP_250378 60.00 140 0 0 1 140 1 140 6е-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 \ t 198 \ n ', ' 1_0 \ tNP_250397 \ t100.00 \ t140 \ t0 \ t0 \ t1 \ t140 \ t1 \ t140 \ t6e-54 \ t 198 \ n ', ' 1_0 \ tNP_250397 \ t100.00 \ T140 \ t0 \ t0 \ t1 \ T140 \ t1 \ T140 \ t6e-54 \ т 198 \ п ']

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

+0

Что означает «x» в функции print_file? –

ответ

2

Если вы хотите 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() 

Если Питон слишком старый для использования с ведомостью

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

Кроме этого, вам может быть интересно узнать на csv module может работать и с файлами с разделителями табуляции

+0

Я получаю недопустимую синтаксическую ошибку, когда я выставляю второй метод? – Gary

+0

@Gary, если вы используете python2.5 включают эту строку в верхней части файла 'from __future__ import with_statement' –

+0

попробовали, что все равно получите недопустимую синтаксическую ошибку – Gary

0

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

+0

h.readlines() возвращается в другой скрипт python, где он напечатан – Gary

+0

@Gary, если печать - это все, что необходимо, то 'h.read()' является идеальным решением. –

0

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

for line in print_file(x): 
    print line 

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

Смежные вопросы