Python3.x:TypeError:预期的str,字节或os.PathLike对象,而不是列表

时间:2018-08-07 01:11:33

标签: excel python-3.x operating-system xlwt

我在一个文件夹中有许多文本文件。每个文本文件都有两个分别写在不同行中的值(在.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

1 个答案:

答案 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