如何使用python ftplib以不同的文件名打开文件

时间:2016-08-10 03:50:45

标签: python python-2.7 ftp

我目前的python代码:

import ftplib
import hashlib
import urllib

def ftp():
  hashing="123"
  ftp = ftplib.FTP('localhost','kevin403','S$ip1234')
  ftp.cwd('/var/www/html/image')

  m=hashlib.md5()
  file = open('Desktop/test.png','rb')
  m.update(hashing)
  dd = m.hexdigest()
  ftp.storbinary('STOR '+dd+ '.png', file)

  file.close()
  ftp.quit()

我有不同的文件名,包括test.png,test1.png和test2.png。我想打开文件并在任何文件打开时存储它。 我尝试使用*星号,我收到了一个错误:

file = open('Desktop/*.png, 'rb') 

2 个答案:

答案 0 :(得分:1)

请尝试使用此版本:

import os
import ftplib
import hashlib
import glob

image_directory = '/home/Desktop/images/'

hashing = "123"
m = hashlib.md5()
m.update(hashing)
dd = m.hexdigest()

ftp = ftplib.FTP('localhost','kevin403','S$ip1234')
ftp.cwd('/var/www/html/image')

for image in glob.iglob(os.path.join(image_directory, 'test*.png')):
   with open(image, 'rb') as file:
      ftp.storbinary('STOR '+dd+ '.png', file)

ftp.close()
ftp.quit()

我希望您意识到这只会在您的FTP服务器上反复写入相同的文件,因为dd永远不会更新。

你也不应该再使用MD5了。如果您只想使用校验和存储文件,请尝试使用此版本:

import os
import ftplib
import hashlib
import glob

def get_sha512(file):
    f = open(file, 'rb')
    value = hashlib.sha256(f.read()).digest()
    f.close()
    return value

image_directory = '/home/Desktop/images/'

ftp = ftplib.FTP('localhost','kevin403','S$ip1234')
ftp.cwd('/var/www/html/image')

for image in glob.iglob(os.path.join(image_directory, 'test*.png')):
   hash = get_sha512(image)[:16]
   with open(image, 'rb') as file:
      ftp.storbinary('STOR {}.png'.format(hash), file)

ftp.close()
ftp.quit()

答案 1 :(得分:0)

这个怎么样?使用glob查找文件,然后在每个文件上运行ftp()的循环遍历列表?

import ftplib
import hashlib
import urllib
from glob import glob

def ftp(filename):
  hashing="123"
  ftp = ftplib.FTP('localhost','kevin403','S$ip1234')
  ftp.cwd('/var/www/html/image')

  m=hashlib.md5()
  file = open(filename,'rb')
  m.update(hashing)
  dd = m.hexdigest()
  ftp.storbinary('STOR '+dd+ '.png', file)

  file.close()
  ftp.quit()

if __name__ == '__main__':
   # get the files
   templist = glob('test*.png')

   # loop over the files we found
   for filename in templist:
      ftp(filename)