我想在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
我觉得这很简单 - 感谢帮助
答案 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()