2016-01-31 2 views
-4

Я пытаюсь изучить python и захотел написать какой-то текст в файл. Я столкнулся с двумя типами файловых объектов.Python- Запись в файл?

FOUT = открыт ("abc.txt", а)

с открытым ("abc.txt", а), как FOUT:

Следующий код:

f= open("abc.txt", 'a') 
f.write("Step 1\n") 
print "Step 1" 
with open("abc.txt", 'a') as fout: 
    fout.write("Step 2\n") 

Gave выход:

Step 2 
Step 1 

И следующий код:

f= open("abc1.txt", 'a') 
f.write("Step 1\n") 
f= open("abc1.txt", 'a') 
f.write("Step 2\n") 

Дал выход:

Step 1 
Step 2 

Почему происходит разница в выходах?

+2

Они делают то же самое, но 'with' обеспечивает дополнительную обработку ошибок и управление ресурсами (например,' close'ing files) с помощью диспетчера контекстов - см. Документацию python: https://docs.python.org/2/ reference/compound_stmts.html # с – AChampion

+0

'open()' не закрывает файл. – furas

+0

Я отредактировал вопрос, чтобы сделать мой вопрос немного более понятным. –

ответ

0

с сам закроет файл, и вы не должны использовать метод близко()

0

Первый просто открывает файл и присваивает объект FOUT. Оператор with добавляет обработку и очистку ошибок. Если есть ошибка при открытии файла, блокировка будет прекращена, но трассировка не будет. Кроме того, используя инструкцию with, вам не нужно явно закрывать файл; это позаботится об этом для вас. Более подробную информацию можно найти here.

+0

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

+0

Прошу прощения; Я не могу помочь вам с этим. – zondo

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