将Python字符串对象写入文件

时间:2015-12-01 15:32:18

标签: python string object

我有这个代码块可靠地创建一个字符串对象。我需要将该对象写入文件。我可以打印数据'的内容。但我无法弄清楚如何将其作为输出写入文件。也为什么"开放"自动关闭a_string?

with open (template_file, "r") as a_string:
   data=a_string.read().replace('{SERVER_NAME}', server_name).replace('{BRAND}', brand).replace('{CONTENT_PATH}', content_path).replace('{DAMPATH}', dampath).replace('{ENV}', env).replace('{CACHE_DOCROOT}', cache_docroot)

2 个答案:

答案 0 :(得分:2)

  
    

我可以打印'数据'的内容,但我无法弄清楚如何将其作为输出写入文件

  

使用with open模式'w'和write代替read

with open(template_file, "w") as a_file:
   a_file.write(data)
  
    

为什么“with open”会自动关闭a_string?

  

open返回File个对象,该对象实现了__enter____exit__方法。当您输入with块时,将调用__enter__方法(打开文件),当退出with块时,将调用__exit__方法(关闭文件) )。

您可以自己实施相同的行为:

class MyClass:
    def __enter__(self):
        print 'enter'
        return self

    def __exit__(self, type, value, traceback):
        print 'exit'

    def a(self):
        print 'a'

with MyClass() as my_class_obj:
     my_class_obj.a()

上述代码的输出将为:

'enter'
'a'
'exit'

答案 1 :(得分:0)

with open (template_file, "r") as a_string:
   data=a_string.read().replace('{SERVER_NAME}', server_name).replace('{BRAND}', brand).replace('{CONTENT_PATH}', content_path).replace('{DAMPATH}', dampath).replace('{ENV}', env).replace('{CACHE_DOCROOT}', cache_docroot).replace('{SLD}', sld)

filename = "{NNN}_{BRAND}_farm.any".format(BRAND=brand, NNN=nnn)
with open(filename, "w") as outstream:
    outstream.write(data)