【问题标题】:TypeError: join() argument must be str or bytes, not 'list'类型错误:join() 参数必须是 str 或 bytes,而不是 'list'
【发布时间】:2019-12-05 05:26:22
【问题描述】:

我是 python 新手,刚刚学习 os.walk() 和 tarfile。我正在尝试遍历一个包含文件的文件夹和包含文件的子文件夹,并尝试将它们全部添加到 tar 文件中。我不断收到错误“TypeError:join() 参数必须是 str 或字节,而不是 'list'”

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

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''''

【问题讨论】:

    标签: python python-3.7


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 2018-03-27
      • 2021-09-09
      • 2020-07-12
      • 1970-01-01
      • 2023-03-29
      相关资源
      最近更新 更多