Python在处理文件

时间:2016-05-01 20:46:07

标签: python python-3.x newline

我正在将一个源文件中的一些文本(包括\n\t个字符)写到(文本)文件中;例如:

源文件(test.cpp):

/*
 * test.cpp
 *
 *    2013.02.30
 *
 */

取自源文件并存储在字符串变量中,如此

test_str = "/*\n test.cpp\n *\n *\n *\n\t2013.02.30\n *\n */\n"

当我使用

写入文件时
    with open(test.cpp, 'a') as out:
        print(test_str, file=out)

正在使用换行符和制表符转换为新行和制表符空格(与test.cpp完全相同)我希望它们保留{{1}和\n 完全一样,\t变量首先保存它们。

有没有办法在Python中写入这些“特殊字符”而不翻译它们时在Python中实现这一点?

3 个答案:

答案 0 :(得分:2)

使用replace()。由于您需要多次使用它,您可能需要查看this

test_str = "/*\n test.cpp\n *\n *\n *\n\t2013.02.30\n *\n */\n"
with open("somefile", "w") as f:
    test_str = test_str.replace('\n','\\n')
    test_str = test_str.replace('\t','\\t')
    f.write(test_str)

答案 1 :(得分:2)

您可以使用<?php class SphereCalculator { const PI = 3.14; const FOUR_THIRDS =4/3; public function __construct($radius){ $this->classRadius = $radius; } public function setRadius ($radius){ $this->classRadius = $radius; } public function getRadius(){ return $this->classRadius; } public function getVolume () { return FOUR_THIRDS * PI * ($this->classRadius * $this->classRadius); } public function getArea () { return PI * ($this->classRadius * $this->classRadius); } public function getDiameter () { return $this->classRadius += $this->classRadius; } } $mySphere = new SphereCalculator (); $newRadius =$mySphere->radius; $newRadius = 113; echo "The volume of the circle is ".$mySphere->getVolume ()."<br>"; echo "The diameter of the circle is ".$mySphere->getDiameter ()."<br>"; echo "The area of the circle is ".$mySphere->getArea ()."<br>"; ?>

str.encode

这将逃脱所有Python识别的特殊转义字符。

鉴于你的例子:

with open('test.cpp', 'a') as out:
    print(test_str.encode('unicode_escape').decode('utf-8'), file=out)

答案 2 :(得分:1)

  

我希望它们保持\ n和\ t \ t,就像test_str变量首先保存它们一样。

test_str不包含反斜杠\ + t(两个字符)。它包含单个字符ord('\t') == 9(与test.cpp中的字符相同)。反斜杠在Python字符串文字中是特殊的,例如,u'\U0001f600'不是十个字符 - 它是单个字符在运行时期间不要将字符串对象混淆在内存中,而将其文本表示形式混淆为Python源代码中的字符串文字。

JSON可以比unicode-escape编码更好地替代存储文本(更便携),即使用:

import json

with open('test.json', 'w') as file:
    json.dump({'test.cpp': test_str}, file)

而不是test_str.encode('unicode_escape').decode('ascii')

要读回json:

with open('test.json') as file:
    test_str = json.load(file)['test.cpp']