Python在临时文件中每行写入一个字符而不是整个字符串



我正在尝试写入和读取但是当我打印字符串中的每一行时,它每行只输出一个字符(我认为这是因为当我运行for循环时,它识别每一行"行";

下面是我的字符串division_text的一个片段,如果我只是执行print(division_text):

Locked VersoToken Tokens- 170,833.00 VSO
LOCKED
Locked 05/02/2021 • Unlocks 10/01/2022
Owner: 0x308D2Ac1Bab7D0211717F969602fBC26D286555A
UNLOCK COUNTDOWN
352D – 9H – 10M – 29S

下面是被写入tmp文件的内容:

L
o
c
k
e
d
V
e
r
s
o
T
o
k
e
n
.
.
.

我的代码如下:

division_text = 'Locked VersoToken Tokens- 170,833.00 VSO
LOCKED
Locked 05/02/2021 • Unlocks 10/01/2022
Owner: 0x308D2Ac1Bab7D0211717F969602fBC26D286555A
UNLOCK COUNTDOWN
352D – 9H – 10M – 29S
VIEW TX'
with tempfile.NamedTemporaryFile(mode='w', delete=False) as tmp:
print(tmp.name)
tmp.write('{}n'.format(division_text))

# reopen the file for reading
with open(tmp.name) as tmp:
new_division_text = tmp.read()
for line in new_division_text:
print(line)
os.remove(tmp.name)

print(line)的输出是我上面写的垂直的字符序列。

'{}n'.format(division_text)似乎对任何事情都没有帮助。

我不能将字符串修改为行列表,因为这样我就不能将列表写入文件,就好像它是我读取的。txt文件一样。或者我可以吗?

Python/我的计算机如何知道它是一个文本文件?

read()将文件的整个内容读入单个数组,这就是为什么当您遍历它时,它将每个字符打印在单独的行上。

你需要这样写:

with open(tmp.name) as tmp:
new_division_text = tmp.readlines()
for line in new_division_text:
print(line)

注意readlines()