Python在没有\ n的情况下添加新行

时间:2016-11-01 22:55:18

标签: python python-3.x

我有这个

    f = open(os.path.join(r"/path/to/file/{}.txt").format(userid), "w")
    f.write(str(points))
    f.write(str(level))
    f.write(str(prevtime))
    f.close()

我知道使用with open(blah) as f:并且更喜欢这个但是当我有这个代码时,即使我先写入文件然后更改为追加模式,而不添加+“\ n”它也不会添加到一条新线。问题是,当我使用

获取数据时
    f = open(os.path.join(r"blah\{}.txt").format(userid), "r")
    lines = f.readlines()
    points = float(lines[0])

我会收到一个错误,告诉我它无法解释(例如:500 \ n)作为浮点数因为它读取\ n。知道我能做什么吗?

修改 我最终修复它只是没有使它成为一个浮点数,但现在这给了我一个ValueError Unconverted Data Remains。这些问题只发生在txt文件中应该包含格式为%H的日期:%M

2 个答案:

答案 0 :(得分:3)

所以,你有类似的东西

>>> f = open("test.txt", "w")
>>> f.write(str(4))
>>> f.write(str(20))
>>> f.close()
>>> f = open("test.txt")
>>> f.readlines()
['420']

但是,你需要写新行,所以就这样做

>>> f = open("test.txt", "w")
>>> f.write("{}\n".format(4))
>>> f.write("{}\n".format(20))
>>> f.close()
>>> f = open("test.txt")
>>> f.readlines()
['4\n', '20\n']
>>> f.close()

如果您不需要换行符,请尝试read().splitlines()

>>> f = open("test.txt")
>>> f.read().splitlines()
['4', '20']

修改

就时间价值而言,这是一个例子。

>>> from datetime import datetime
>>> time_str = datetime.now().strftime("%H:%M")
>>> time_str
'18:26'
>>> datetime.strptime(time_str, "%H:%M")
datetime.datetime(1900, 1, 1, 18, 26)

答案 1 :(得分:1)

要在没有换行符的情况下打印,请在下方使用。 但是,如果没有换行符,您可能需要添加一些分隔符(如空格)来分隔数据

 >>> sys.stdout.write('hello world')
hello world>>>

保留换行符后,您可以使用rstrip在读出时删除换行符

lines = f.readlines()
points = float(lines[0].rstrip)

或者,我更喜欢下面的pythonic方式

lines = f.read().splitlines()
points = float(lines[0])