我有这个
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
答案 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])