Python导入文件 - for循环

时间:2015-07-24 05:28:22

标签: python for-loop

我想在python中打开两个简单的文件,并根据文件中的关键字打印信息

文件a.txt包含:

'Final

This is ready'

文件b.txt包含:

'Draft

This is not ready'

我想阅读这两个文件,如果文件是“最终”文件。在txt文件中的任何位置打印出文本的其余部分(不包括单词' Final')。我的for循环输出不正确:

fileList = ['a.txt','b.txt']
firstLineCheck = 'Final\n'

for filepath in fileList: 
f = open(filepath, 'r') #openfiles
for line in f:
    if line == firstLineCheck:
       print line
    else:
         break

我觉得这很简单 - 感谢帮助

5 个答案:

答案 0 :(得分:1)

fileList = ['a.txt', 'b.txt']
firstLineCheck = 'Final\n'

for filepath in fileList: 
   with open(filepath, 'r') as f:
       line = f.readline() 
       while line:
           if line == firstLineCheck:
               print f.read()
           line = f.readline()               

答案 1 :(得分:0)

由于您想要检查第一行中是否存在Final,您可以将该文件作为列表读取,并查看第一个元素是否包含final,如果是,则打印除第一行以外的整个文件

fileList = ['a.txt','b.txt']
firstLineCheck = 'Final'

for filepath in fileList: 
    f = open(filepath, 'r').readlines() #openfiles
    if firstLineCheck in f[0]:
        print "".join(f[1:])

<强>输出:

This is ready'

答案 2 :(得分:0)

您的代码中有三个错误。首先,您将只打印匹配的行,其次是仅在仅包含&#34;最终&#34;的行上触发,第三,它不排除包含&#34;最终&#34;的行。作为指定。修复方法是使用一个标志来查看你是否找到了&#34; Final&#34;:

fileList = ['a.txt','b.txt']
firstLineCheck = 'Final'
firstLineFound = False


for filepath in fileList: 
    f = open(filepath, 'r') #openfiles
    for line in f:
        if firstLineFound:
            print line
        elif firstLineCheck in line:
            # print line # uncomment if you want to include the final-line
            firstLineFound = True
        else:
            break

如果您只想在仅包含&#34; Final&#34;的行上触发那么你应该使用firstLineCheck = "Final\n"elif line==firstLineCheck

答案 3 :(得分:0)

假设你要打印所有行,只有你的firstLineCheck,并使用你的代码....

fileList = ['a.txt','b.txt']
firstLineCheck = 'Final\n'

for filepath in fileList: 
    f = open(filepath, 'r') #openfiles
    do_print = False
    for line in f:
        if line == firstLineCheck:
            do_print = True
            continue
        if do_print:
            print line

请注意,break会将您带出循环,并且continue将移至下一次迭代。

答案 4 :(得分:0)

假设您的关键字是文件的第一行,您可以执行此操作。这更有意义,因为你可以得到'#34; Final&#34;在&#34; draft&#34;。

的内容中的某个地方
fileList = ['a.txt','b.txt']
firstLineCheck = 'Final\n'

for filepath in fileList: 
   with open(filepath, 'r') as f:
       first_line = f.readline()            # read the first line
       if first_line == firstLineCheck:
           print f.read()