在文件的新行中写入数字



我正在尝试读取一个文件f1,它包含这样的数字:

2
5
19
100
34
285
39
12

我想读这些数字,把它们平方,然后写在一个新文件里,每一个都在新行上。这是我的代码:

with open("Data.txt", 'r') as f1, open("Double.txt", 'w') as f2:
Lines = f1.readlines()
for new_line in Lines:
if new_line.isdigit():
x = int(new_line)
x = pow(x, 2)
on_new_line = str(x) + "n"
f2.write(on_new_line)

但在第二个文件中,它只写入

144

有人能帮我吗?

文件只返回144的原因是使用readlines()将行作为字符串返回,其中包括末尾的换行符:n

我们可以通过将文件作为一个整体读取并在换行符上进行拆分来将项目放入数组中来解决此问题:

with open('data.txt', 'r') as f1, open('double.txt', 'w') as f2:
lines = f1.read().split('n')
for new_line in lines:
squared = int(new_line)**2
f2.write(f"{squared}n")

这将创建一个数组,每个项都是一个字符串,所以在第4行,我们将其转换为int,以便对其进行平方

我们还将每个元素写入新的文本文件,并在其后面再次添加换行符。

您可以通过以下方式迭代抛出文件:

path1 = "Data.txt"
path2 = "Double.txt"
with open(path1, 'r') as f1, open(path2, 'w') as f2:
for line in f1:
try:
f2.write(str(int(line)**2))
except ValueError:
pass

最新更新