读取文件,然后计算所述文件中的行数

时间:2019-03-02 00:51:52

标签: python

我正在尝试创建一个程序,该程序向用户询问文件。然后,程序应打印文件的内容,然后计算行数。运行程序时出现的问题是出现以下错误:for count in range[1, f2_l + 1]:TypeError: can only concatenate str (not "int") to str。计数不应该是整数而不是字符串吗?我想继续使用while f2_l != '':

f1 = input('Please enter filename you wish to open.: ')   
f2 = open(f1, 'r') 
f2_l = f2.readline()
for count in range[1, f2_l + 1]:
    print(count,':')
while f2_l != '':
    print(f2_l)
    f2_l = f2.readline()
f2.close()

4 个答案:

答案 0 :(得分:1)

f1 = input('Please enter filename you wish to open.: ')   
f2 = open(f1, 'r') 
f2_l = f2.readlines()
for i in range(1, len(f2_l)):
    print(i, ':', f2_l[i - 1])
f2.close()

阅读文档,了解文件操作和循环信息。我是行列表中的索引。 readlines()返回行列表,每行都是一个str

答案 1 :(得分:1)

我建议这样做:

filename = input('Please enter filename you wish to open.: ')

with open(filename) as f:
    data = f.readlines()

for index, line in enumerate(data, 1):
    print('{index}: {line}'.format(index=index, line=line))

最好执行以下操作:

  1. 使用with语句打开文件,以确保您打开的文件将被关闭;

  2. 使用内置函数enumerate而不是索引的单独for循环

  3. 不要使用+来连接字符串,而应使用format方法

答案 2 :(得分:0)

您可以使用Python内置的enunerate()函数,如下所示,以在打印时自动对行进行计数:

filename = input('Please enter filename you wish to open: ')
with open(filename, 'r') as file:
    count = 0  # In case file is empty.
    for count, line in enumerate(file, 1):
        print(line, end='')

print('line count:', count)

答案 3 :(得分:-1)

您可以将其用于while循环:

s1=pd.Index(df.ColB).indexer_between_time('09:00:00','17:00:00',include_start =False ,include_end =False)
s1=df.index.isin(s1)
df.loc[s1|df.ColC.isin(['Saturday','Sunday'])]