从文件python读取时的不同文本

时间:2016-02-10 15:49:10

标签: python python-2.7 file

我正在使用Python 2.7

我从阅读文件中获得的文本与我直接指定给变量的文本不同。

import unittest
class test_things(unittest.TestCase):
    def test_bad_read_stack_overflow(self):
        text_var = """[] Lorem Ipsum Lorem Ipsum Lorem Ipsum
Lorem Ipsum
Lorem Ipsum Lorem Ipsum Lorem Ipsum
*** Lorem Ipsum

Lorem Ipsum Lorem Ipsum Lorem Ipsum
Lorem Ipsum Lorem Ipsum
Lorem Ipsum Lorem Ipsum ** []

Lorem Ipsum
* Lorem IpsumLorem Ipsum
Lorem IpsumLorem IpsumLorem Ipsum
[] Lorem Ipsum
Lorem Ipsum
Lorem IpsumLorem Ipsum



        """

        import io
        text_file = io.open("unittest_data/example_for_stack_overflow", "r", encoding="utf-8").read()

        self.assertEqual(text_var, text_file)

断言失败。

在文件中,"example_for_stack_overflow"我有:

[] Lorem Ipsum Lorem Ipsum Lorem Ipsum
Lorem Ipsum
Lorem Ipsum Lorem Ipsum Lorem Ipsum
*** Lorem Ipsum

Lorem Ipsum Lorem Ipsum Lorem Ipsum
Lorem Ipsum Lorem Ipsum
Lorem Ipsum Lorem Ipsum ** []

Lorem Ipsum
* Lorem IpsumLorem Ipsum
Lorem IpsumLorem IpsumLorem Ipsum
[] Lorem Ipsum
Lorem Ipsum
Lorem IpsumLorem Ipsum

为清楚起见,因为这里没有出现,所以最后有4个字符。

  

... IpsumLorem Ipsum \ n \ n \ n \ n

它与我分配给text_var的文本完全相同。

为什么会出现此问题以及如何解决?

谢谢!

2 个答案:

答案 0 :(得分:2)

您是否详细检查了错误消息?

AssertionError: '[] L[279 chars]rem Ipsum\nLorem Ipsum\nLorem IpsumLorem Ipsum\n\n\n\n        ' != '[] L[279 chars]rem Ipsum\nLorem Ipsum\nLorem IpsumLorem Ipsum\n\n\n\n'

字符串末尾有几个空格('[...]\n\n '),这些空格不在文件中('[...]\n\n')。

关闭字符串时,会包含"""前面的空格。这应该有效:

    def test_bad_read_stack_overflow(self):
        text_var = """[] Lorem Ipsum Lorem Ipsum Lorem Ipsum
Lorem Ipsum
Lorem Ipsum Lorem Ipsum Lorem Ipsum
*** Lorem Ipsum

Lorem Ipsum Lorem Ipsum Lorem Ipsum
Lorem Ipsum Lorem Ipsum
Lorem Ipsum Lorem Ipsum ** []

Lorem Ipsum
* Lorem IpsumLorem Ipsum
Lorem IpsumLorem IpsumLorem Ipsum
[] Lorem Ipsum
Lorem Ipsum
Lorem IpsumLorem Ipsum



"""

答案 1 :(得分:1)

(耸肩)某处您的文件文本与变量文本不同。

确保它们相同

with open("unittest_data/example_for_stack_overflow", "w") as outf:
    outf.write(text_var)

然后再次运行你的代码,它应该可以工作。