TypeError:join()参数必须是str或字节,而不是'list'

时间:2019-07-26 21:39:50

标签: python python-3.7

我是python的新手,只是学习os.walk()和tarfile。我试图遍历包含文件和带有文件的子文件夹的文件夹,并尝试将所有文​​件添加到tar文件中。我不断收到错误消息“ TypeError:join()参数必须为str或字节,而不是'list'”

在尝试添加到tar文件之前,我尝试仅打印内容。给出相同的错误。我可以通过在os.path.dirname的参数中添加str来解决这个问题,但不确定这样做是否正确。

import tarfile
import os

tnt = tarfile.open("sample.tar.gz", 'w:gz')

dt = os.walk('C:\\users\\cap\\desktop\\test1')
for root, d_names, f_names in dt:
   print(os.path.join((root), (f_names))) #error
   tnt.add(os.path.join(root, f_names) #error
tnt.close()

print(os.path.join((root), (f_names)))
genericpath._check_arg_types('join', path, *paths)

输出:

TypeError: join() argument must be str or bytes, not 'list''''

1 个答案:

答案 0 :(得分:0)

f_names是一个列表,您需要对其进行迭代以分别获取每个文件名并在os.path.join中使用,例如:

for root, d_names, f_names in dt:
    for filename in f_names:
        os.path.join(root, filename)