python一道关于文件中最长行的问题

来源:互联网 发布:广联达梦龙网络计划 编辑:程序博客网 时间:2024/05/22 01:37

题目

可以自己利用程序定位到一个文件夹,并在文件夹下查找特定的文件并计算出所查找的特定文件的最长一行的长度。

为了测试,建立了一个filetest.py的文件夹,文件夹里面存了三个HTML文件。首先利用os.chdir('C:/Users/.../filetest.py)更换一下当前目录,原目录为python所在的目录,现在把它更换到我们要测试的文件夹。把当前工作目录复制给now_file方便以后用os.path.join(path1, path2)弄出完整目录(方便打开文件)。

import ospath = os.chdir('C:/Users/.../filetest.py')now_file = os.getcwd()longest = 0for each in os.listdir('.'):    if os.path.isfile(each) and os.path.splitext(each)[1] == '.html':    #筛选HTML文件并判断是否为文件#        f = open(os.path.join(now_file, each), 'r')        for eachline in f:            linelen = len(eachline)            if linelen > longest:                longest = linelen    print(longest)print('在所有的.py文件中最长的一行长度为: ' + str(longest))

优化方案。当文件小的时候可以这样做,但是当文件大时并不能这样做。为什么?因为在读取文件时,for eachline in f:这段代码会把文件的所有行读取到内存中,这样会造成浪费。这时候就需要用到生成器了。

import ospath = os.chdir('C:/Users/.../filetest.py')now_file = os.getcwd()longest = 0L = []for each in os.listdir('.'):    if os.path.isfile(each) and os.path.splitext(each)[1] == '.html':        longest = max(len(eachline) for eachline in open(os.path.join(now_file, each)))        L.append(longest)        print(longest)print('在所有的.py文件中最长的一行长度为: ' + str(max(L)))

注意要把每个文件中最长的行的长度传到list里面,然后再用
max(list)找出所有文件中最长的行的长度。

73243在所有的HTML文件中最长的一行长度为: 43

当然啦,还有一点要注意千万不要算.py文件里的最长行,会得不到正确的结果。(我也不知道为啥)

原创粉丝点击