我是 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)
Run Code Online (Sandbox Code Playgroud)
输出:
TypeError: join() argument must be str or bytes, not 'list''''
Run Code Online (Sandbox Code Playgroud)
f_names是一个列表,您需要对其进行迭代以分别获取每个文件名并在os.path.join例如:
for root, d_names, f_names in dt:
for filename in f_names:
os.path.join(root, filename)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8127 次 |
| 最近记录: |