Python3.x: TypeError: expected str, bytes or os.PathLike object, not list

Python3.x: TypeError: expected str, bytes or os.PathLike object, not list

我在一个文件夹中有很多文本文件。每个文本文件都有两个值,它们分别写在不同的行中(使用 .write 函数中的 \n\ )。看起来像下面这样。

0.907831
0.992549

我想创建一个主 excel 文件,其中合并了我的文本文件中的所有值(而不是手动输入)。

所需的输出如下所示。

'Filename' 0.907831 0.992549

到目前为止,我有以下代码。

import xlwt
import os
import fnmatch

path='Z:\Data-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')

目前运行进入以下错误(如下)。关于如何 improve/fix 代码的任何想法?

  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

os.walk returns 一个 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了解更多详情。