Python中的writeline问题

3 投票
5 回答
10880 浏览
提问于 2025-04-15 12:54

我遇到了一个很基础的问题。我正在学习Python和脚本编程的入门知识,所以这让我感到困惑:

我想要读取和写入新文件中的行:

ifile=open("C:\Python24\OtsakkeillaSPSS.csv", "r")
ofile = open("C:\Python24\OtsakkeillaSPSSout.csv", "w")

#read first line with headers
line1 = ifile.readline()
print line1

#read following lines which contain data & write it to ofile
for line in ifile:
    if not line:
        break
    ofile.write(line)

如果我把这些内容打印到屏幕上,所有的行都显示得很好:

0,26100,568,8636
0,11130,555,**3570
0,57100,77,2405**
0,60120,116,1193
0,33540,166,5007
0,95420,318,2310
0,20320,560,7607
0,4300,692,3969
0,65610,341,2073
0,1720,0,0
0,78850,228,1515
0,78870,118,1222

但是如果我把它写入文件,我发现少了大约15行:

0,6100,948,8332
0,26100,568,8636
0,11130,555

如果有人能告诉我我哪里理解错了,我会非常感激。

祝好,

贾尼

5 个回答

3

“if not line:”这个检查其实是多余的。

for line in ifile:
    ofile.write(line)
4
#read following lines which contain data & write it to ofile
for line in ifile:
    if not line:
        continue          #break stops the loop, you should use continue
    ofile.write(line)

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更简单易懂。

4

你应该根据Python文档来调用ofile.close()。

我不太确定在没有明确关闭文件的情况下,写入的数据是否会完全保存到文件里。

另外,正如SilentGhost提到的,检查一下你的输入文件中是否有空行。

还有,正如下面的stefanw提到的,在for循环中,"if.. break"这个语句其实是没必要的。

撰写回答