我是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''''
答案 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)