python:使用TarFile的FTP
我有以下代码,我想知道怎么能抑制这个错误,我在谷歌上搜索了一些,但没有成功。
def backup_system(dirs):
""" Funcao para fazer backup das confs do systema """
os.walk("/")
try:
tar = tarfile.open("/home/backup/system/system_backup_%s.tgz" % today, "w:gz")
for dir in system_dirs:
tar.add(dir,recursive=True)
finally:
tar.close()
print tar
ftp_put(tar)
def ftp_put(file):
"""Funcao para fazer upload dos arquivos para FTP"""
conn = ftplib.FTP(ftp_server, backup_user, backup_password)
f = open(file, 'r')
conn.storbinary("STOR ", f)
try:
f = open(file, 'r')
conn.storbinary("STOR ", f)
f.close()
finally:
conn.quit()
嗯,这段代码没问题,只是它在使用ftplib的时候会报错。错误信息是它期待的是字符串,但找到了tarfile。非常感谢。
对了,这里是错误信息:
Traceback (most recent call last):
File "/usr/local/bin/backup.py", line 89, in <module>
main()
File "/usr/local/bin/backup.py", line 78, in main
backup_system(system_dirs)
File "/usr/local/bin/backup.py", line 42, in backup_system
ftp_put(tar)
File "/usr/local/bin/backup.py", line 55, in ftp_put
f = open(file, 'rb')
TypeError: coercing to Unicode: need string or buffer, TarFile found
2 个回答
4
tar
是一个 tarfile.TarFile
对象,但 open()
函数需要一个字符串作为文件名。
1
为了补充Ignacio的回答,我稍微更新了一下你的备份系统,希望这样能解决问题。
def backup_system(dirs):
""" Funcao para fazer backup das confs do systema """
os.walk("/")
tar_name = "/home/backup/system/system_backup_%s.tgz" % today
try:
tar = tarfile.open(tar_name, "w:gz")
for dir in system_dirs:
tar.add(dir,recursive=True)
finally:
tar.close()
print tar
ftp_put(tar_name)