Python write to a file возвращает пустой файл

Я пытаюсь выполнить простые команды для записи hello world в файл:

50 complexity:test% python2.7
Python 2.7.3 (default, Feb 11 2013, 12:48:32)
[GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> f=open("/export/home/vignesh/resres.txt","w")
>>> f.write("hello world")
>>> f.write("t".join(["hello","world"]))

возвращает пустой файл.

2 ответов


Python не будет очищать файл после каждого write. Вам либо нужно будет смыть его вручную, используя flush:

>>> f.flush()

или закройте его самостоятельно с close:

>>> f.close()

при использовании файлов в реальной программе, рекомендуется использовать with:

with open('some file.txt', 'w') as f:
    f.write('some text')
    # ...

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


вам нужно закрыть файл:

>>> f.close()

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

with open("/export/home/vignesh/resres.txt","w") as f:
    f.write("hello world") 
    f.write("\t".join(["hello","world"]))

он автоматически закроет их для вас.