我需要一些帮助。我需要创建一个函数来解析文本文件,其中包含500个字符或更长的行。我写的代码如下:
import os
from os.path import join
place = raw_input('Enter path: ')
for f in os.listdir(place):
newlist = []
if f.endswith(".txt"):
newlist.append(f)
for i in newlist:
with open(join(place, i)) as fi:
for line in fi:
if len(line) > 350:
print(place, i)
所以我的想法是打印文件的位置和文件的名称,如果长度超过500.但是,它似乎没有这样做,因为我知道一个大于700的文件它根本就没有找到。有任何想法吗?
答案 0 :(得分:1)
这保持每行长度的累积计数。一旦超过350,它会将文件名附加到结果列表并继续搜索。
import os
place = raw_input('Enter path: ')
text_files = [f for f in os.listdir(place) if f.endswith('.txt')]
results = []
for f in text_files:
with open(os.path.join(place, f)) as fin:
count = 0
for line in fin:
count += len(line)
if count > 350:
results.append(f)
break
答案 1 :(得分:0)
这将获得最初在问题描述
中提到的文件大小import os
b = os.path.getsize("/path/filename.fileextension")
if len(b) > 500:
...
但如果您想要我编辑的行长度,并且问题标题中提到的行长度采用其他方法(实际上您的确定没问题)
with open("/path/filename.ext") as f:
for line in f:
if len(line) > 500:
...
# Where you can do it
答案 2 :(得分:0)
newlist = []
,否则它会在每次迭代中被清空。 newlist
。 以下是建议编辑后代码的样子:
import os
from os.path import join
place = raw_input('Enter path: ')
newlist = []
for f in os.listdir(place):
if f.endswith(".txt"):
newlist.append(f)
for i in newlist:
with open(join(place, i)) as fi:
for line in fi:
if len(line) > 350:
print(place, i)