Python代码没有读取文件,说文件没有行

时间:2014-04-11 08:14:41

标签: python file

由于要求读取文件并显示文件的前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])

4 个答案:

答案 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])