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

Python writing one character per line instead of entire string on temporary file

我正在尝试写入和读取一个字符串到一个临时文件中,但是当我打印字符串中的每一行时,它每行只输出一个字符(我假设它是因为当我 运行 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/my 计算机如何知道它是一个文本文件?

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

你需要这样的东西:

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

注意 readlines()