我正在尝试迭代文件夹中的文件,但代码总是只在一个文件上执行(目前有两个文件)。该程序应该打开txt文件,将其转换为Python列表,并将列表写入新创建的文件(每个单独)。我无法单独找到这个bug。
import io
import os
'''printing program directory'''
ANVCONDA_directory = os.path.dirname(os.path.realpath(__file__)) + os.sep
print ANVCONDA_directory
inputdir = ANVCONDA_directory + "TEMP"
print os.listdir(inputdir)
'''counting files in folder'''
path, dirs, files = os.walk(inputdir).next()
file_count = len(files)
print file_count
for filename in os.listdir(inputdir):
#opening txt file to extract data
with io.open(inputdir + "\\" + filename, "r", encoding="cp1250") as file:
ocr_results = [line.strip() for line in file]
#spliting into list
for line in ocr_results:
print("[" + line + "]")
#writing list to file
import pickle
with open('outfile' + filename, 'wb') as fp:
pickle.dump(ocr_results, fp)
答案 0 :(得分:1)
您正在编写输出的代码块的缩进似乎是错误的。它应该在for循环中。因为它当前在循环之外,所以它仅在上面的循环结束后执行。
我想提到的另一点是os.listdir包含文件夹中的所有内容,包括子目录。如果你想跳过目录,也许你应该看一下os.isdir