【发布时间】:2014-03-03 06:56:03
【问题描述】:
我试图创建一个多处理的 ftp 上传,就像这里以许多不同的方式描述的那样。脚本已经上传了我选择的文件,但每次上传大约 90 KB 后上传都会中断。有没有人暗示我做错了什么? 提前致谢。 问候彼得
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import ftplib
from ftplib import FTP
from multiprocessing import Process
import os
##### Config für den Upload Path ####
Path='c:/'
#####################################
def uploadZip(zipName,PathUpload):
# Hochzuladenden XML
# Upload zu Datenausstausch - Test
ftpsportschau= FTP('xxxxx')
ftpsportschau.login ('xxx', 'xxxx')
zipDatei = open('%s%s' %(PathUpload,zipName),'r')
try:
ftpsportschau.storbinary('STOR %s' % zipName, zipDatei)
except ftplib.error_perm:
print "PermError: cannot upload file %s" % zipName
except ftplib.error_temp:
print "TempError: cannot upload file %s" % zipName
zipDatei.close()
ftpsportschau.quit()
return
def UploadAsync(FileListe,PathAsync):
''' Funktion zum Upload mit parallelen Prozessen
Sie enthält nicht den Upload Befehl,sondern nur den Aufruf der Prozesse
'''
print ' List in Async'+'\n'
print FileListe
try:
for filename in FileListe:
p = Process(target=uploadZip, args=(filename,PathAsync))
p.start()
except:
print 'An error has occured'
def Files(PathFiles):
''' Funktion zum Ermitteln der Files'''
UploadListe=[]
Files=os.listdir(PathFiles)
print Files
print '\n'
for files in Files:
if files.endswith('.zip'):
UploadListe.append(files)
else: continue
print UploadListe
print '\n'
return UploadListe
if __name__ == "__main__":
UploadAsync(Files(Path),Path)
【问题讨论】:
-
“上传中断”是什么意思?确切地说,您的脚本打印的是什么?
-
您好 Rob,问题是脚本只上传了前 90 KB 并且没有错误通知就停止了。该问题已通过我之前在打开文件时未使用的二进制模式得到解决。我愚蠢的错。感谢您的回答。
-
不客气。请记住“接受”我的回答(点击我的回答旁边的复选标记),这样其他人就不会再花时间在这上面了。
标签: python file-upload ftp multiprocessing