通过CorePytho工作 我可以使用w / eachLine下面的代码打印文件, 如果我删除逗号它是双倍空格。
我试图用逗号删除whiteaspace - 没有找到答案,因为下面的代码只打印.txt的最后一行而不是前面的行。
#! /usr/bin/env python
'readTextFile.py == read and display a text file'
#get the filename
fname = raw_input('Enter the filename: ')
print
#attempt to open the file for reading
try:
fobj = open(fname, 'r')
except IOError, e:
print "*** file open error:", e
else:
#display contents to the screen
for eachLine in fobj:
x = [fname.rstrip('\n') for eachLine in fobj]
print eachLine,
fobj.close()
答案 0 :(得分:1)
您正在循环读取循环中的文件 。 Python文件对象具有“读取位置”&#39 ;;每次迭代读取位置移动到下一行的文件对象时。
因此,在for eachLine in fobj
循环内,您将使用列表解析重新遍历fobj
。
实际上,您只是阅读第一行,然后在x
中存储文件的 rest (没有换行符)。在Python 2中,列表解析循环中重用的eachLine
变量与外部for
循环中使用的变量相同,所以最终它仍然绑定到你文件中的最后一行。 (在Python 3中,列表推导有自己的范围,因此列表推导中的eachLine
变量是独立的,就像另一个函数中的本地一样。)
如果您只想从当前行中删除换行符,请执行以下操作:
eachLine = eachLine.rstrip('\n')
并在for
循环的后续迭代中保留要处理的文件的其余部分。