Python2.7 file.obj.write(str)未写入文件

Python2.7 file.obj.write(str)未写入文件,python,Python,这里有新的python2.7用户。我搜索过类似的查询,但我不太清楚自己做错了什么。我有一个简短的脚本来读取目录中的所有文件,然后依次读取每个文件,然后将它们写入一个主文件 我的代码如下;虽然我没有收到错误消息,但此时我可以看到两件事出了问题,1-它似乎只打开了列表中的第一个文件,它应该循环通过,所以我猜我使用glob?时出错了;2-尽管printstr语句显示在控制台nps上,但输出文件从未被写入 我已经仔细检查了文件是否存在,它是否为空,并且在调用函数时传入了正确的路径和文件名 非常感谢您的帮

这里有新的python2.7用户。我搜索过类似的查询,但我不太清楚自己做错了什么。我有一个简短的脚本来读取目录中的所有文件,然后依次读取每个文件,然后将它们写入一个主文件

我的代码如下;虽然我没有收到错误消息,但此时我可以看到两件事出了问题,1-它似乎只打开了列表中的第一个文件,它应该循环通过,所以我猜我使用glob?时出错了;2-尽管printstr语句显示在控制台nps上,但输出文件从未被写入

我已经仔细检查了文件是否存在,它是否为空,并且在调用函数时传入了正确的路径和文件名

非常感谢您的帮助

#!/usr/bin/env python

import glob
import sys

filestoberecognised=sys.argv[1]
outputfile=sys.argv[2]

filecontents=glob.glob(filestoberecognised)
with open(outputfile,'w+') as f:
        for i, row in enumerate(filecontents):
                print(row) # this correctly prints to console
                f.write(row+'\n') # this should write the filename of the filestoberecognised to the outputfile
                with open(row,'r') as labfile:
                        for j, line in enumerate(labfile): # this should write words in label file
                                f.write('%s'%(line))
                                print('%s'%(line))
                labfile.close() # ensures each file looped through is closed 
                f.write('\n.\n') 
                f.flush()
f.close()

首先,如果使用with open as f打开,则不需要使用f.close,这就是上下文管理器的全部要点,在块的末尾调用close。同样地,对于labfile,您也可以只针对labfile中的行执行以下操作:在文件中迭代换行。非常感谢这两个技巧,我现在已经按照建议更新了代码,但仍然存在两个相同的问题—只查看目录中的1个文件,而没有写入单个主文件。再次感谢。