python文件读取,逐行写入

时间:2016-11-01 12:05:29

标签: python file io

我正在研究python文件I / O.我做了一个简单的程序( main.py )。

我的目标是逐行读取并逐行写入。

fstream = open("input2.txt", 'r');
line = fstream.readline()
while line:
    print(line);
    line = fstream.readline()

fstream.close()
下面的

是我的input2.txt文件

start.
hello world.
hello python.
I am studying file I/O in python
end.

当我运行python程序时

  

python main.py

然后,结果是......

start.

hello world.

hello python.

I am studying file I/O in python

end.

这与我的预期不一样。

所以我修改了main.py

fstream = open("input2.txt", 'r');
line = fstream.read().split("\n")
while line:
print(line);
line = fstream.read().split("\n")

fstream.close()

但是我的程序已经进入无限循环。

picture of infinite loop

要解决这个问题,我该怎么办?

我期望的结果如下。

start.
hello world.
hello python.
I am studying file I/O in python
end.

3 个答案:

答案 0 :(得分:2)

打印功能会自动添加换行符。所以

print msg

将打印变量msg的内容,后跟新行

如果您不希望python打印尾随的新行,则必须在末尾添加逗号。这将打印没有尾随换行符的msg。如果msg已经有一个新行,就是从文件中读取新行的情况,你会看到一个新行代替双新行。

print msg,

如果您使用的是python 3,其中print作为函数调用,则可以指定end参数。见https://docs.python.org/3/library/functions.html#print

print(msg, end = '')

答案 1 :(得分:1)

首先,使用with语句打开文件,这样您就不需要显式关闭它。其次,不要使用while循环;您可以直接迭代文件。第三,使用rstrip方法从您读取的行中删除任何尾随空格(或rstrip('\n')仅删除尾随换行符):

with open("input2.txt", 'r') as fstream:
    for line in fstream:
        line = line.rstrip('\n')
        print(line)

答案 2 :(得分:1)

除上述答案外;您也可以使用.splitlines()

fstream = open("input2.txt", 'r');
line = fstream.readline().splitlines()
while line:
    print(line[0]);
    line = fstream.readline().splitlines()

fstream.close()