Найти - Пользователи
Полная версия: При распаковке с помощью ZipFile файлы весят по 0кб.
Начало » Python для новичков » При распаковке с помощью ZipFile файлы весят по 0кб.
1 2
PythonStriker
Помогите кто чем может =) Есть скрипт скачивающий файл и распаковывающий его с помощью ZipFile . Но вот проблемма после распаковки файлы весят по 0 Кб.
sanodin
Это клиент FTP , небольшой help есть,да сам все увидишь в коде

## {{{ http://code.activestate.com/recipes/521925/ (r1)
from ftplib import FTP
import sys, os, os.path, operator

def upload(handle,filename):
f = open(filename,"rb")
(base,ext) = os.path.splitext(filename)
picext = ".bmp .jpg .jpeg .dib .tif .tiff .gif .png"
if(operator.contains(picext,ext)):
try:
handle.storbinary("STOR " + filename,f,1)
except Exception:
print "Successful upload."
else:
print "Successful upload."
f.close()
return

try:
handle.storbinary("STOR " + filename,f)
except Exception:
print "Successful upload."
else:
print "Successful upload."
f.close()
return


def download(handle,filename):
f2 = open(filename,"wb")
try:
handle.retrbinary("RETR " + filename,f2.write)
except Exception:
print "Error in downloading the remote file."
return
else:
print "Successful download!"
f2.close()
return

print "CLIFTP ~ NSP Corp.\n\n"
host_name = raw_input("Enter website name to connect to, exclude ftp notation: ")
if "http://" in host_name:
host_name = host_name.replace("http://","")
host_name = host_name.replace("\n","")
user = raw_input("Enter username: ")
pwd = raw_input("Enter password: ")
try: ftph = FTP(host_name)
except:
print "Host could not be resolved."
raw_input()
sys.exit()
else: pass
try:
ftph.login(user,pwd)
except Exception:
if user == "anonymous" or user == "Anonymous" and pwd == "anonymous" or pwd == "Anonymous":
print "The server does not accept anonymous requests."
raw_input()
sys.exit()
else:
print "Invalid login combination."
raw_input()
sys.exit()
else:
print "Successfully connected!\n"
print ftph.getwelcome()
flag = 1
count = 0
path = ftph.pwd()
charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
print "Press help at any time to see proper usage.\n"
while flag:
command = raw_input("FTP ]> ")
if "get " in command:
rf = command.replace("get ","")
rf = rf.replace("\n","")
download(ftph,rf)
continue
elif "put " in command:
lf = command.replace("put ","")
lf = lf.replace("\n","")
upload(ftph,lf)
ftph.close()
ftph = FTP(host_name)
ftph.login(user,pwd)
continue
elif "makedir " in command:
mkdirname = command.replace("makedir ","")
mkdirname = mkdirname.replace("\n","")
try: ftph.mkd(mkdirname)
except:
print "Incorrect usage."
continue
else:
print "Directory created."
continue
elif "remdir " in command:
rmdirname = command.replace("remdir ","")
rmdirname = rmdirname.replace("\n","")
current = ftph.pwd()
ftph.cwd(rmdirname)
allfiles = ftph.nlst()
for file in allfiles:
try:
ftph.delete(file)
except Exception:
pass
else:
pass
ftph.cwd(current)
try:
ftph.rmd(rmdirname)
except Exception:
print "All files within the directory have been deleted, but there is still another directory inside. As deleting this directory automatically goes against true FTP protocol, you must manually delete it, before you can delete the entire directory."
else:
print "Directory deleted."
continue
elif command == "dir":
print ftph.dir()
continue
elif command == "currdir":
print ftph.pwd()
continue
elif "chdir " in command:
dirpath = command.replace("chdir ","")
dirpath = dirpath.replace("\n","")
ftph.cwd(dirpath)
print "Directory changed to " + dirpath
continue
elif command == "up":
dir = ftph.pwd()
temp = dir
index = len(dir) - 1
for i in range(index,0,-1):
if temp[i] == "/" and i != len(dir):
ftph.cwd(temp)
print "One directory back."
continue
if(operator.contains(charset,dir[i])):
temp = temp[:-1]
if temp=="/":
ftph.cwd(temp)
print "One directory back."
elif command == "rename":
fromname = raw_input("Current file name: ")
toname = raw_input("To be changed to: ")
ftph.rename(fromname,toname)
print "Successfully renamed."
continue
elif "delete " in command:
delfile = command.replace("delete ","")
delfile = delfile.replace("\n","")
ftph.delete(delfile)
print "File successfully deleted."
continue
elif command == "term":
ftph.close()
print "Session ended."
raw_input()
sys.exit()
elif "size " in command:
szfile = command.replace("size ","")
szfile = szfile.replace("\n","")
print "The file is " + str(ftph.size(szfile)) + " bytes."
continue
elif command == "debug -b":
ftph.set_debuglevel(1)
print "Debug mode set to base."
continue
elif command == "debug -v":
ftph.set_debuglevel(2)
print "Debug mode set to verbose."
continue
elif command == "debug -o":
ftph.set_debuglevel(0)
print "Debug mode turned off."
continue
elif command == "help":
print "debug -o - turns off debug output\n"
print "debug -v - turns the debug output to verbose mode\n"
print "debug -b - turns the debug output to base\n"
print "size [filename] - returns the size in bytes of the specified file"
print "term - terminate the ftp session\n"
print "delete [filename] - delete a file\n"
print "rename - rename a file\n"
print "up - navigate 1 directory up\n"
print "chdir [path] - change which directory you're in\n"
print "currdir - prints the path of the directory you are currently in\n"
print "dir - lists the contents of the directory\n"
print "remdir [directory path] - removes/deletes an entire directory\n"
print "makedir [directory path] - creates a new directory\n"
print "put [filename] - stores a local file onto the server (does not work with microsoft office document types)\n"
print "get [filename] - download a remote file onto your computer\n\n"
continue
else:
print "Sorry, invalid command. Check 'help' for proper usage."
continue

#EoF

## end of http://code.activestate.com/recipes/521925/ }}}
PythonStriker
Это к чему?
sanodin
Скачиваешь с FTP что тебе нужно,и в том числе архивы.
sanodin
Ты же свой скрипт не выложил, а “помогите кто чем может”-просишь
Качай файло, распаковывай
Прикручивай свой скрипт по распаковке…
PythonStriker
Мне нужно не скачивание файлов. Это я уже давно сделал. У меня при распаковке выходит лажа все файлы по 0 кБ. Архив скачивается полностью и при распаковке ручками все ок
PythonStriker
#coding: 866
import os
import sys
import zipfile
import ftplib

path = os.path.dirname(sys.argv[0])
os.chdir(path)

ext = zipfile.ZipFile("file.zip", "r")
ext.extractall(path)
ext.close()
sanodin
Твой же скрипт


#coding: 866
import os
from time import sleep
import sys
import zipfile

path = os.path.dirname(sys.argv)
os.chdir(path)

pwd = “ppa”
filename = “tkl.zip”
ext = zipfile.ZipFile(“tkl.zip”, “r”)
ext.setpassword(pwd)
ext.extractall(path)
ext.close()

все работает,и весит все нормально

да и тот что выше тоже нормально распаковывает,проверил
PythonStriker
Из-за чего может быть что у меня распаковывается по 0кБ?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB