我在一个文件夹中有许多文本文件。每个文本文件都有两个分别写在不同行中的值(在.write函数中使用\ n \)。看起来如下。
0.907831
0.992549
我想创建一个主excel文件,该文件将文本文件中的所有值组合在一起(而不是手动输入)。
所需的输出如下所示。
'Filename' 0.907831 0.992549
到目前为止,我有以下代码。
import xlwt
import os
import fnmatch
path='Z:\Data\13-output'
wbk = xlwt.Workbook()
sheet = wbk.add_sheet('data')
row = 0
for files in os.walk(path):
for file in files:
if fnmatch.fnmatch(file, '*.txt'):
L = open(os.path.join( file), "r").read()
sheet.write(row,5,L)
row += 1
wbk.save('all_values_in_txt.xls')
它当前正在遇到以下错误(如下)。关于如何改进/修复代码的任何想法吗?
File "<ipython-input-81-ddeb0284f378>", line 17, in <module>
if fnmatch.fnmatch(file, '*.txt'):
File "C:\Users\JohnDoe\Anaconda3\lib\fnmatch.py", line 34, in fnmatch
name = os.path.normcase(name)
File "C:\Users\JohnDoe\Anaconda3\lib\ntpath.py", line 48, in normcase
s = os.fspath(s)
TypeError: expected str, bytes or os.PathLike object, not list
答案 0 :(得分:0)
os.walk
返回一个3项元组的列表,因此,当您遍历该列表时,需要解开元组的包装:
for root, _, files in os.walk(path):
for file in files:
if fnmatch.fnmatch(file, '*.txt'):
L = open(os.path.join(root, file), "r").read()
sheet.write(row,5,L)
row += 1
有关详细信息,请阅读os.walk
's documentation。