我正在研究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()
但是我的程序已经进入无限循环。
要解决这个问题,我该怎么办?
我期望的结果如下。
start.
hello world.
hello python.
I am studying file I/O in python
end.
答案 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()