pythonretr
importftplib
path='c:/user/pcwuyu/desktop/1c0/'
l=[]
defls_filter(line):
ll=line.split()
ifll[5]=='Jan'andll[6]=='9'andll[7]>'14:30'andll[7]<'15:30':
ifll[8]!='.'andll[8]!='..':
l.append(ll[8])
returnll[8]
ftp=ftplib.FTP('127.0.0.1')
ftp.login('root','password')
ftp.cwd('/mnt/1c0')
ftp.set_pasv(False)
fs=ftp.retrlines('LIST',ls_filter)
foriinl:
ftp.retrbinary('RETR'+i,open(path+i,'wb').write)
ftp.quit()
一個簡單的例子,下載1月9日14:30~15:30的文件
❷ 如何在Python中使用FTP
from ftplip import FTP # 首先要引入 ftplib 這個庫
# 接著,這是我自定義的幾個用於操作 ftp 的函數,def 後面跟的是自定義函數名,函數體內FTP 相關的語句和函數來自上面 import 那個包,你自己體會吧:
# 初始化 FTP 連接
def ftp_open(HOST,PORT,USERNAME,PASSWORD):
ftp=FTP()
ftp.set_debuglevel(2)
ftp.connect(host=HOST,port=PORT)
ftp.login(USERNAME,PASSWORD)
return ftp
# 關閉 FTP 連接
def ftp_close(ftp):
ftp.set_debuglevel(0)
ftp.quit()
# 文件上傳函數,filename 可以是windows 格式包含全路徑的文件
def ftp_up(ftp,filename):
#print(ftp.getwelcome())
#ftp.cwd('xxx/www')
file_handler=open(filename,'rb')
ftp.storbinary('STOR %s' % os.path.basename(filename),file_handler)
file_handler.close()
print('FTP up OK.')
# 文件下載函數,filename 可以是windows 格式包含全路徑的文件
def ftp_down(ftp,filename):
#print(ftp.getwelcome())
#ftp.cwd('xxx/www')
file_handler=open(filename,'wb')
ftp.retrbinary('RETR %s' % os.path.basename(filename),file_handler)
file_handler.close()
print('FTP down OK.')
❸ Python,if 條件 總是不執行 python pop.py stat 無論什麼指令都quit為什麼
下面是你的賦值語句
action =""
然後下面的判斷條件都不成立
if action == 'stat':
elif action == 'list':
elif action =='retr':
無奈只有這個成立else:
判斷條件只能走else語句,就只能執行pp.quit()啦
❹ 怎麼把Python ftplib 中下載文件名寫成函數
拼裝後作為參數:
cmd = 'RETR ' + name()
frp.retrbinary(cmd, file_handel, bufsize)
❺ python 收取郵件都是亂碼。
一般郵件在傳輸的時候都會被編碼,圖中的是base64編碼的特徵,這類編碼是可逆的,只需要進行base64解碼即可,python有個base64模塊,可以用來編碼和解碼。
❻ python poplib 模塊 連接gmail出錯 試過163 就沒問題 這是什麼原因
給你一個發送郵件,接收郵件,並且根據郵件頭計算郵件發送,接收時間差的公共代碼
#!/usr/bin/envpython
#coding=utf-8
importsys
importtime
importpoplib
importsmtplib
fromdatetimeimportdatetime
importemail
fromemail.parserimportParser
fromemail.headerimportdecode_header
fromemail.utilsimportparseaddr
fromemail.mime.textimportMIMEText
importre
importpyodbc
defremove_values_from_list(the_list,val):
whilevalinthe_list:
the_list.remove(val)
#郵件發送函數
defsend_mail(mail_host,mail_user,mail_pass,mail_postfix,to_list,sub,content):
me=""+""+mail_user+"@"+mail_postfix+""
#printme
msg=MIMEText(content,_subtype='plain')
msg['Subject']=sub
msg['From']=me
msg['To']=";".join(to_list)#將收件人列表以『;』分隔
try:
server=smtplib.SMTP()
server.connect(mail_host)#連接伺服器
server.login(mail_user,mail_pass)#登錄操作
server.sendmail(me,to_list,msg.as_string())
server.close()
returnTrue
exceptException,e:
#printe
returnFalse
returnFalse
#郵件接收函數
defaccpet_mail(accpet_host,accpet_user,accpet_pass):
mail_list=[]
#printaccpet_host
#print"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
try:
p=poplib.POP3(accpet_host)
p.user(accpet_user)
p.pass_(accpet_pass)
(mail_count,mail_total_size)=p.stat()#返回一個元組:(郵件數,郵件尺寸)
foriinrange(mail_count):
mail_map={}
#郵件從1開始讀取,retr方法返回一個元組:(狀態信息,郵件,郵件尺寸)
status_info,email_info,email_size=p.retr(str(i+1))
#printdecode_header(email.message_from_string(str(email_info)))[0][0]
#printemail.message_from_string(str(email_info))
message={}
last_email_item,append_flag="",True
#printstr(decode_header(email_info)[0][0])
remove_values_from_list(email_info,'')
forj,email_iteminenumerate(email_info):
ifj==len(email_info)-1:
message["Content"]=email_item
break
email_item_list="".join(email_item.split(" ")).split(":")
iflen(email_item_list)!=2:
ifappend_flag==True:
message[last_email_item]=message.get(last_email_item)+email_item_list[0]
#printemail_item_list[0]
else:
ifemail_item_list[0]inmessage:
append_flag=False
continue
message[email_item_list[0]]=email_item_list[1]
last_email_item=email_item_list[0]
if"Subject"notinmessageor"Content"notinmessage:
p.dele(str(i+1))
continue
#printi+1,message.get("Subject"),message.get("Content")
content_match_list=re.findall(r"Thesendingtime",message.get("Content"))
subject_match_list=re.findall(r"MAILVIEW",message.get("Subject"))
ifsubject_match_list==[]orcontent_match_list==[]:
p.dele(str(i+1))
#printi+1,message.get("Subject"),message.get("Content")
#print"2:"+str(email_info)
continue
#printstr(i+1)
content_list=message.get("Content").split("#")
send_list=content_list[0].split(":")
#print"send_time"+str(datetime.strptime(send_list[1],'%Y%m%d%H%M%S'))
#mail_map["send_time"]=str(datetime.strptime(send_list[1],'%Y%m%d%H%M%S'))
#mail_map["recive_time"]=str(datetime.strptime(message.get("Date"),'%a,%d%b%Y%H:%M:%S+0800'))
sr_list=content_list[1].split("@")
from_list=sr_list[0].split(":")
to_list=sr_list[1].split(":")
#printfrom_list[0]+":"+from_list[1]
mail_map[from_list[0]]=from_list[1]
#printto_list[0]+":"+to_list[1]
mail_map[to_list[0]]=to_list[1]
#print"recive_time:"+str(datetime.strptime(message.get("Date"),'%a,%d%b%Y%H:%M:%S+0800'))
#Mon,30Mar201514:20:58+0800'%a,%d%b%Y%H:%M:%S+0800'
#mail_map["send_time"]=str(datetime.strptime(message.get("Date"),'%a,%d%b%Y%H:%M:%S+0800'))
#從字元串讀取信息-->解密郵件頭-->字元串取[0][0]-->以" "分組-->取第一個-->替換字元串"Fromnobody"為空-->格式化為日期格式-->得到接收時間
#mail_map["recive_time"]=str(datetime.strptime(str(decode_header(email.message_from_string(str(email_info)))[0][0]).split(" ")[0].replace("Fromnobody",""),'%a%b%d%H:%M:%S%Y'))
mail_map["send_time"]=str(time.strftime("%Y-%m-%d%H:%M:%S",time.localtime(time.mktime(email.utils.parsedate(message.get('Date'))))))
receive_time_list=message.get('Received').split(";")
mail_map["recive_time"]=str(datetime.strptime(receive_time_list[len(receive_time_list)-1].replace("(CST)","").lstrip(),'%a,%d%b%Y%H:%M:%S+0800'))
#printmessage
#print"send_time:%s"%mail_map.get('send_time')
#print"recive_time:%s"%mail_map.get('recive_time')
#print"----------------------------------------------------------------"
mail_list.append(mail_map)
p.dele(str(i+1))
p.quit()
returnmail_list
exceptpoplib.error_proto,e:
#print"Loginfailed:",e
p.quit()
returnmail_list
#sys.exit(1)
returnmail_list
#運行當前文件時,執行sendmail和accpet_mail函數
if__name__=="__main__":
'''
mailto_list,mail_send_host=['[email protected]'],"smtp.gacfiatauto.com"
mail_send_user,mail_send_pass,mail_send_postfix="test","GACFiat1234","gacfiatauto.com"
NOW=datetime.now()
now_str=datetime.strftime(NOW,'%Y%m%d%H%M%S')
sub="MAILVIEW"+now_str
content="Thesendingtime:"+now_str+"#from_mail:JV@to_mail:126"
send_mail(mail_send_host,mail_send_user,mail_send_pass,mail_send_postfix,mailto_list,sub,content)
#accpet_host,accpet_user,accpet_pass='pop.126.com','gacfiat','fiat100?'
accpet_host,accpet_user,accpet_pass='pop3.gacfiatauto.com','test','GACFiat1234'
accpet_mail(accpet_host,accpet_user,accpet_pass)
'''
DB2_HOST='10.27.95.30'
DB2_PORT='50000'
DB2_DB='db2s'
DB2_USER='db2admin'
DB2_PWD='fiat100?'
dsn="driver={IBMDB2ODBCDRIVER};database=%s;hostname=%s;port=%s;protocol=tcpip;"%(DB2_DB,DB2_HOST,DB2_PORT)
conn=pyodbc.connect(dsn+"uid="+DB2_USER+";pwd="+DB2_PWD+";");
cursor=conn.cursor()
cursor.execute("select*fromkernel.mail_property")
row=cursor.fetchone()
property_list=[]
#1獲取要發送和接收郵件的屬性信息
whilerow:
(from_mail,from_protocol,from_address,from_host,auth_flag,from_port,from_user,from_password,to_mail,to_protocol,to_address,to_host,to_port,to_user,to_password,is_current,t2)=(row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7],row[8],row[9],row[10],row[11],row[12],row[13],row[14],row[15],row[16])
row=cursor.fetchone()
ifis_current=="1":#andfrom_mail=='126'andto_mail=="JV":
property_list.append((from_mail,from_protocol,from_address,from_host,auth_flag,from_port,from_user,from_password,to_mail,to_protocol,to_address,to_host,to_port,to_user,to_password,is_current,t2))
cursor.close()
#2發送郵件
forpropertyinproperty_list:
(from_mail,from_protocol,from_address,from_host,auth_flag,from_port,from_user,from_password,to_mail,to_protocol,to_address,to_host,to_port,to_user,to_password,is_current,t2)=property
mailto_list=[to_address]
mail_send_host=from_host
mail_send_user=from_user
mail_send_pass=from_password
mail_send_postfix=from_host.replace(from_protocol+".","")
NOW=datetime.now()
now_str=datetime.strftime(NOW,'%Y%m%d%H%M%S')
sub="MAILVIEW"+now_str
content="Thesendingtime:"+now_str+"#from_mail:"+from_mail+"@to_mail:"+to_mail
#printmail_send_host
send_resp=send_mail(mail_send_host,mail_send_user,mail_send_pass,mail_send_postfix,mailto_list,sub,content)
ifsend_resp:#如果發送失敗,再嘗試發送一次
continue
else:
#print'sendfail,sendagain.'
send_mail(mail_send_host,mail_send_user,mail_send_pass,mail_send_postfix,mailto_list,sub,content)
#3接收郵件
forpropertyinproperty_list:
(from_mail,from_protocol,from_address,from_host,auth_flag,from_port,from_user,from_password,to_mail,to_protocol,to_address,to_host,to_port,to_user,to_password,is_current,t2)=property
accpet_host=to_host
accpet_user=to_user
accpet_pass=to_password
starttime=datetime.now()
#printaccpet_host
mail_list=accpet_mail(accpet_host,accpet_user,accpet_pass)
#4添加郵件記錄信息到DB2資料庫中
insert_sql="insertintokernel.mail_data(from_mail,send_time,to_mail,recive_time)values"
fori,mailinenumerate(mail_list):
from_mail,send_time,to_mail,recive_time=mail['from_mail'],mail['send_time'],mail['to_mail'],mail['recive_time']
#printsend_time,from_mail,to_mail,recive_time
insert_sql=insert_sql+"('%s',to_date('%s','yyyy-mm-ddhh24:mi:ss'),'%s',to_date('%s','yyyy-mm-ddhh24:mi:ss')),"%(from_mail,send_time,to_mail,recive_time)
ifi==len(mail_list)-1:
insert_sql=insert_sql[:len(insert_sql)-1]
endtime=datetime.now()
message='開始時間:%s,總共耗時:%ss'%(starttime,(endtime-starttime).seconds)
#printmessage
ifmail_list!=Noneandmail_list!=[]:
#printinsert_sql
cursor=conn.cursor()
cursor.execute(insert_sql)
cursor.commit()
cursor.close()
#sys.exit(1)
❼ python 檢測FTP目錄是否為空
ftp相關命令操作
ftp.cwd(pathname) #設置FTP當前操作的路徑
ftp.dir() #顯示目錄下文件信息
ftp.nlst() #獲取目錄下的文件
ftp.mkd(pathname) #新建遠程目錄
ftp.pwd() #返回當前所在位置
ftp.rmd(dirname) #刪除遠程目錄
ftp.delete(filename) #刪除遠程文件
ftp.rename(fromname, toname)#將fromname修改名稱為toname。
ftp.storbinaly("STOR filename.txt",file_handel,bufsize) #上傳目標文件
ftp.retrbinary("RETR filename.txt",file_handel,bufsize)#下載FTP文件
❽ python圖像處理代碼,望大神詳細解釋。越詳細越好
#初始化一個矩形np.max(marks)+1行,3列,默認值為0
colorTab=np.zeros((np.max(marks)+1,3))
#遍歷數組,給每行的3列賦值,就是RGB顏色值,8位的
foriinrange(len(colorTab)):
aa=np.random.uniform(0,255)
bb=np.random.uniform(0,255)
cc=np.random.uniform(0,255)
colorTab[i]=np.array([aa,bb,cc],np.uint8)
#初始化另一個跟img圖像形狀大小一樣的圖像,一副黑色圖像
bgrImage=np.zeros(img.shape,np.uint8)
#遍歷marks形狀的行列
foriinrange(marks.shape[0]):
forjinrange(marks.shape[1]):
index=marks[i][j]
#判斷是不是區域與區域之間的分界,如果是邊界(-1),則使用白色顯示
ifindex==-1:
bgrImage[i][j]=np.array([255,255,255])#像素點設置位白色
else:
bgrImage[i][j]=colorTab[index]#像素點設置位上邊隨機生成的顏色值
#顯示處理後的圖像圖像
cv2.imshow('AfterColorFill',bgrImage)
#總結,先生成一個跟marks相同數量的row*col的一張顏色表,然後創建一個跟marks相同大小的一副黑色圖像
#最後對黑色圖像畫出白色邊界和內部隨機彩色像素值
❾ python怎麼識別圖片中每個線的基本形狀
輪廓搜索
Cv2的方法。findContours用於查找輪廓。代碼示例如下:
Cr、t = cv2。cv2 findContours (b。retr_tree cv2.chain_approx_simple) #
第三個參數定義了輪廓的近似方式
在上述函數的參數中,第一個參數是二值化矩陣,第二個參數是獲得輪廓的方式,第三個參數是定義輪廓的近似方式。
搜索大綱
Cv2方法。FindContours用於查找contours。代碼示例如下:
Cr t等於cv2。Cv2 findContours (b. retr_tree Cv2 .chain_approx_simple) #
第三個參數定義了輪廓的近似方式
上述函數的參數中,第一個參數是二值化矩陣,第二個參數是獲取輪廓的方式,第三個參數是定義輪廓的近似方式。
❿ 怎樣使用Python圖像處理
Python圖像處理是一種簡單易學,功能強大的解釋型編程語言,它有簡潔明了的語法,高效率的高層數據結構,能夠簡單而有效地實現面向對象編程,下文進行對Python圖像處理進行說明。
當然,首先要感謝「戀花蝶」,是他的文章「用Python圖像處理 」 幫我堅定了用Python和PIL解決問題的想法,對於PIL的一些介紹和基本操作,可以看看這篇文章。我這里主要是介紹點我在使用過程中的經驗。
PIL可以對圖像的顏色進行轉換,並支持諸如24位彩色、8位灰度圖和二值圖等模式,簡單的轉換可以通過Image.convert(mode)函數完 成,其中mode表示輸出的顏色模式。例如''L''表示灰度,''1''表示二值圖模式等。
但是利用convert函數將灰度圖轉換為二值圖時,是採用固定的閾 值127來實現的,即灰度高於127的像素值為1,而灰度低於127的像素值為0。為了能夠通過自定義的閾值實現灰度圖到二值圖的轉換,就要用到 Image.point函數。
深度剖析Python語法功能
深度說明Python應用程序特點
對Python資料庫進行學習研究
Python開發人員對Python經驗之談
對Python動態類型語言解析
Image.point函數有多種形式,這里只討論Image.point(table, mode),利用該函數可以通過查表的方式實現像素顏色的模式轉換。其中table為顏色轉換過程中的映射表,每個顏色通道應當有256個元素,而 mode表示所輸出的顏色模式,同樣的,''L''表示灰度,''1''表示二值圖模式。
可見,轉換過程的關鍵在於設計映射表,如果只是需要一個簡單的箝位值,可以將table中高於或低於箝位值的元素分別設為1與0。當然,由於這里的table並沒有什麼特殊要求,所以可以通過對元素的特殊設定實現(0, 255)范圍內,任意需要的一對一映射關系。
示例代碼如下:
import Image # load a color image im = Image.open(''fun.jpg'') # convert to grey level image Lim = im.convert(''L'') Lim.save(''fun_Level.jpg'') # setup a converting table with constant threshold threshold = 80 table = [] for i in range(256): if i < threshold: table.append(0) else: table.append(1) # convert to binary image by the table bim = Lim.point(table, ''1'') bim.save(''fun_binary.jpg'')
IT部分通常要完成的任務相當繁重但支撐這些工作的資源卻很少,這已經成為公開的秘密。任何承諾提高編碼效率、降低軟體總成本的IT解決方案都應該進行 周到的考慮。Python圖像處理所具有的一個顯著優勢就是可以在企業的軟體創建和維護階段節約大量資金,而這兩個階段的軟體成本佔到了軟體整個生命周期中總成本 的50%到95%。
Python清晰可讀的語法使得軟體代碼具有異乎尋常的易讀性,甚至對那些不是最初接觸和開發原始項目的程序員都 能具有這樣的強烈感覺。雖然某些程序員反對在Python代碼中大量使用空格。
不過,幾乎人人都承認Python圖像處理的可讀性遠勝於C或者Java,後兩 者都採用了專門的字元標記代碼塊結構、循環、函數以及其他編程結構的開始和結束。提倡Python的人還宣稱,採用這些字元可能會產生顯著的編程風格差 異,使得那些負責維護代碼的人遭遇代碼可讀性方面的困難。轉載