2011-12-29 6 views
3

Я пытаюсь открыть .txt-файл в Python со следующей функцией.Открытие файла .txt в Python

def get_my_string(): 
    """Returns a string of the text""" 
    f = open("/home/Documents/text.txt", 'r') 
    string = str(f.read()) 
    f.close() 
    return string 

Я хочу, чтобы строка была строкой текста из открытого файла. Однако после вызова функции выше «строка» представляет собой пустой список.

+4

действительно ли эта структура управления существует и у вас есть необходимые разрешения для этого файла? как бы то ни было, вы должны получить строковое представление файла. вызов str() вокруг f.read, является сверхплотным и не делает ничего полезного. –

+2

Вставьте полный код с выводом, пожалуйста. Вы не можете получить «список» этой функции. – Avaris

+0

Вы оба правы. Это была глупая ошибка (смущенная). Я не был зарегистрирован как правильный пользователь и не имел доступа к файлу. Я думаю, что «статьи» возвращались как пустой список, потому что я не переопределял его после более ранней (неудачной) попытки, которая вернула пустой список. Большое спасибо. –

ответ

7
def get_my_string(): 
    """Returns the file inputFn""" 

    inputFn = "/home/Documents/text.txt" 

    try: 
     with open(inputFn) as inputFileHandle: 
      return inputFileHandle.read() 

    except IOError: 
     sys.stderr.write("[myScript] - Error: Could not open %s\n" % (inputFn)) 
     sys.exit(-1) 
+0

Файл не будет закрыт, если он полностью пуст. Было бы более компактным и понятным использовать 'с open (inputFn, 'r') как f: return f.next()' –

+0

Спасибо, я отредактировал свой ответ соответственно. –

+0

-1 (1) это читает только первую строку, которая не является тем, что ОП сказал, что он хотел (2), если есть «IOError», он подавляет подробную информацию об ошибке (файл не существует? имеют разрешения? и т. д.?) и безвозмездно называет 'sys.exit' –

0

Вы действительно не нужен дом/документы часть до тех пор, пока файл питона и текстовый файл сохраняются в той же папке, что вам нужно только открыть текстовый файл с помощью функции Open() и текстовый файл name в строке, поэтому Open ("text.txt") вам могут не понадобиться скобки, но они могут работать с ними.

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