我的程序运行顺利,但我希望我的文件从ftp被压缩到我的本地驱动器
我的问题:调用main()函数后只有一个文件被压缩
这是我的代码:
import os
import upload
import download
import zipfile
import ConfigParser
import ftputil
def main():
#create a folder Temp on d drive for later use
path = r'D:\Temp'
os.mkdir(path)
#parse all the values at config.ini file
config = ConfigParser.ConfigParser()
config.readfp(open('config.ini'))
server = config.get('main', 'Server')
username = config.get('main', 'Username')
password = config.get('main', 'Password')
uploads = config.get('main', 'Upload folder')
downloads = config.get('main', 'Download folder')
#connect to ftp
ftp = ftputil.FTPHost(server, username, password)
dirlist = ftp.listdir(downloads)
for list in dirlist:
ftp.chdir(downloads)
target = os.path.join(path, list)
ftp.download(list, target)
#########################################################
# THis section is where algo fails but the program run#
########################################################
#zipping files
absolute_path = r'D:\Temp'
dirlist = os.listdir(absolute_path)
filepath = r'D:\Temp\project2.zip'
for list in dirlist:
get_file = os.path.join(absolute_path, list)
zip_name = zipfile.ZipFile(filepath, 'w')
zip_name.write(get_file, 'Project2b\\' + list)
if __name__ == '__main__':
print "cannot be"
看一下shuil模块。有一个使用shuil.make_archive()的示例:
http://docs.python.org/library/shutil.html
当您这样做时:
如果为每个要压缩的文件重新创建一个zip file,
"w"
模式意味着您可以从头重新创建它。尝试以下操作(在循环之前创建zip文件):
否则,它将以追加模式打开zipfile:
当您这样做时:
为每个要压缩的文件重新创建一个ZipFile,
"w"
模式意味着您从头开始重新创建它。尝试以下操作(在循环之前创建zip文件):
否则,它将以追加模式打开zipfile:
如果有很多文件,可以并行压缩它们:
相关问题 更多 >
编程相关推荐