由于要求读取文件并显示文件的前10行,或者如果文件长度小于10行,则显示所有行。当我试图在我的计算机上运行我的代码时,它将文件注册为有0行(无论我使用什么文件)并且只显示一个空白行作为输出。我想知道我哪里出错了所以我可以避免我的下一个任务的错误。任何风格或其他提示也是受欢迎的。
这是我的代码:
#Displays the top 10 lines in a file
import sys
# Make sure the input is correct, take file name
if len(sys.argv) == 2:
filename = sys.argv[1]
else:
print("You must start the program with 1 command line parameter.")
quit()
# open file
fle = open(filename, "r")
#Count number of lines
linecount = 0
for line in fle:
linecount = linecount + 1
# If the file is less than 10 lines, print the entire file
# If the file has more than 10 lines, print only first 10.
lines = fle.readlines()
if linecount < 10:
for line in fle:
print(line,)
else:
for i in range(10):
print(lines[i])
答案 0 :(得分:4)
可能是那个
for line in fle:
linecount = linecount + 1
从文件中读取每一行,以便在循环完成后,lines = fle.readlines()
中没有其他行可以从该文件中读取?
尝试在fle.seek(0)
之前插入lines = fle.readlines()
以将文件“倒回”到开头,然后再重新阅读。
(例如,另请参阅here。)
答案 1 :(得分:2)
您不需要对行进行计数,也无需检查行的限制,Python可以为您完成所有这些操作。就这样做:
with open(filename, "r") as fle:
lines = fle.readlines()
print '\n'.join(lines[:10])
<强>更新强>
如果您坚持使用自己的代码,这里是固定版本:
#Displays the top 10 lines in a file
import sys
# Make sure the input is correct, take file name
if len(sys.argv) == 2:
filename = sys.argv[1]
else:
print("You must start the program with 1 command line parameter.")
quit()
# open file
fle = open(filename, "r")
lines = fle.readlines()
linecount = len(lines)
if linecount < 10:
for line in lines:
print(line)
else:
for i in range(10):
print(lines[i])
答案 2 :(得分:1)
我会编写如下代码,这很简单
with open("give_your_file_path") as file_to_read:
head=[file_to_read.next() for x in xrange(10)]
然后,
print head
你去,它打印你需要的任何东西。
希望这有助于你
答案 3 :(得分:0)
如果你想在Unix平台上计算文件行:
import os
def linecount_wc(filePath):
command = "wc -l %s" % filePath
return int(os.popen(command).read().split()[0])