Как мне открыть текстовый файл на Python?

#python #python-3.x #filehandler

#python #python-3.x #обработчик файлов

Вопрос:

В настоящее время я пытаюсь открыть текстовый файл с именем «temperature.txt «я сохранил файл на своем рабочем столе с помощью обработчика файлов, однако по какой-то причине я не могу заставить его работать. Кто-нибудь может сказать мне, что я делаю не так.

 #!/Python34/python
from math import *

fh = open('temperature.txt')

num_list = []

for num in  fh:
    num_list.append(int(num))

fh.close()
  

Комментарии:

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

2. FileNotFoundError tempertature.txt должен находиться в том же каталоге, что и ваш .py файл. ValueError — пытаюсь преобразовать строку (прочитанную из файла) в int, но это не int. Can't see output — распечатайте свой список.

3. В вашем коде нет ничего плохого. Если вам нужна помощь — вам также нужно сообщить нам об ошибке. Однако, как и в предыдущих комментариях, проблема, скорее всего, заключается в том, что файл не существует (или скрипт ищет его не в том каталоге), или в вашем файле есть строки, которые не являются просто числами (например, пробел в конце файла может вызвать ошибку в forцикл, даже если файл открылся правильно)

Ответ №1:

Pythonic способ сделать это

 #!/Python34/python

num_list = []

with open('temperature.text', 'r') as fh:
    for line in fh:
        num_list.append(int(line))
  

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

Если вас устраивает понимание списков — это другой метод :

 #!/Python34/python

with open('temperature.text', 'r') as fh:
    num_list = [int(line) for line in fh]
  

В обоих случаях ‘temperature.text’ должен находиться в вашем текущем каталоге.

Комментарии:

1. Вы пропустили кавычки после имени файла в обоих примерах.

2. @shadow — легко исправляется быстрым редактированием 🙂 — все готово.

3. Это намного лучше 🙂

4. @shadow — Соглашение на этом сайте заключается в том, чтобы делать подобные незначительные изменения самостоятельно — при условии, что редактирование исправляет ошибку. Я думаю, что теперь у вас достаточно репутации, чтобы редактировать сообщения других людей. Изменения будут проверены, поэтому вы ничего не сможете сломать…. Но спасибо, что дали мне знать — очень признателен.

5. Обычно сайт не позволяет вам вносить такие незначительные изменения, и я чувствую, что сообщение оригинальному постеру поможет им в следующий раз. Но спасибо, что напомнили мне, что у меня есть такая возможность.

Ответ №2:

Вам просто нужно использовать .readlines() на fh

вот так:

 #!/Python34/python
from math import *

fh = open('temperature.txt')

num_list = []

read_lines = fh.readlines()
for line in read_lines:
    num_list.append(int(line))

fh.close()
  

Комментарии:

1. Вы имеете в виду для строки в строках

2. На самом деле это не так. Вызов readlines загрузит весь файл в память, но если оставить его в покое, в памяти будет храниться только одна строка за раз, что делает его более эффективным при работе с большими файлами.

3. как сказал @shadow — использование «строк чтения» не обязательно. простое выполнение ‘for num in fh’ приведет к повторению каждой строки в файле.