使用subprocess.call在python中压缩文件

时间:2014-09-18 15:19:06

标签: python zip

我的服务器有点问题。

所以故事: 我有一个NAS处理我的域名的电子邮件。它运行良好,但它不提供任何仅用于电子邮件的备份软件,但它包含的邮箱有点奇怪。

它包含在用户的主目录中,如" /home/user123/.Mailbox"

因此,如果我想收集这些邮箱并将其归档,我必须编写一些代码。

问题是虽然它上面有一种Linux,但它没有bash但是没有for循环。

另一方面它有python模块,我开始写一个小脚本,但后来我卡住了......

当我想使用ZIP打包和压缩文件时,我注意到如果我将它们传递给变量,它就无法处理zip命令参数之间的空格。

有人能为我提供解决方案吗?

以下是代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
from os import walk,path
import subprocess
import datetime

sourcepath="/home/"
savepath="/backups"
foldername=[]
tarparams=''
dt=str(datetime.date.today())

## get to know the directories in /home    
for (dirpath,dirnames,filenames) in walk(sourcepath):
    foldername.extend(dirnames)
    break
##

## check if the save path exists and if it does create the parameters of the compression
if not path.exists(savepath):
    print "Save path does not exist"
    exit()
else:
    for userhomedir in foldername:
        if path.exists(sourcepath+userhomedir+"/.Maildir"):
#           tarparams=tarparams+'"'+sourcepath+userhomedir+"/.Maildir"+'",'
            tarparams=tarparams+sourcepath+userhomedir+"/.Maildir "
        else:
        None
##

## call the zip command and compress the mailboxes with the highest compression
#subprocess.call(["zip","-r","-9",savepath+"/mailbkp-"+dt,tarparams])
subprocess.call(["zip","-r","-9",savepath+"/mailbkp-"+dt]+tarparams.split())
##

提前谢谢你。 : - )

0 个答案:

没有答案