python
  • list
  • python-3.5
  • openpyxl
  • ftplib
  • 2017-04-16 13 views -1 likes 
    -1

    私はftp上で特定のjpgを見つけるのはかなり素晴らしい方法を持っています。 それは私が持っているExcel上のファイルを見つけ、ftpをチェックします。 これをもっと正確に、より速く/より簡単に、より普遍的なものにするにはどうしたらいいですか?ftpサーバー上のファイルを検索する代わりに?

    ftp = FTP("ftp.helmethouse.com") 
    g=ftp.login(user ='username',passwd = 'password') 
    
    wb = openpyxl.load_workbook(r'C:\Users\aaron\Documents\HustleHardRacing\Shoei HJC Colors only.xlsx') 
    sheet = wb.get_sheet_by_name('Shoei HJC full colors and sizes') 
    
    def check_line_for_img(line): 
        for i in range(2,143): 
         x = sheet.cell(row =i, column = 3).value 
         k = ['r.jpg', 'top.jpg', 't.jpg', 'rer.jpg', 'rt.jpg'] 
         line = line[56:] 
         if x is None: 
          pass 
         else: 
          for i in range(len(k)): 
           y = (x[:-2]+'03'+k[i]) 
           print(y) 
           if line == y: 
            print(line) 
           elif y is None: 
            print ('Error!') 
            pass 
           else: 
            pass 
    k = ftp.retrlines('LIST', check_line) 
    
    +1

    "より普遍的な" –

    +2

    注意を定義します。このコードでない場合何らかの方法で壊れてしまった場合は、https://codereview.stackexchange.com/tour –

    +0

    の代わりにここで質問してみてください。「一般的に、特定の価値のある商品のリストを検索するベストプラクティスは何ですか?しかし私はおそらくちょうどそれ自身を見つけることができるでしょう –

    答えて

    0

    あなたは、例えば、set()を使用してそれを行うことができます。

    from openpyxl.workbook.workbook import Workbook as _Workbook 
    
    def normalize(l, has_ext=False): 
        for i in range(len(l)): 
         if has_ext: l[i] = l[i][:-4] 
         l[i] = l[i][:-2] 
        return l 
    
    wb = _Workbook() 
    ws = wb.worksheets[0] 
    data = [['', '', 'Images'], ['', '', 'r01'], ['', '', 'top01'], ['', '', 't01'], ['', '', 'rer01'], ['', '', 'rt01']] 
    for row, rData in enumerate(data, 1): ws.append(rData) 
    
    x = [c[0].value for c in ws['C2:C6']] 
    print('x=%s' % str(x)) 
    
    k = ['r03.jpg', 'top03.jpg', 't03.jpg', 'rer03.jpg', 'rt03.jpg', 'rr03.jpg'] 
    
    x_set = set(normalize(x)) 
    k_set = set(normalize(k, True)) 
    print('x_set=%s\nk_set=%s' % (x_set, k_set)) 
    
    x_diff = k_set.difference(x_set) 
    if x_diff: 
        print('x_set missing:%s' % (x_diff)) 
    
    k_diff = x_set.difference(k_set) 
    if k_diff: 
        print('k_set missing:%s' % (k_diff)) 
    else: 
        print('k_set missing None') 
    

    出力
    X = [ 'R01'、 'TOP01'、 'T01'、 'rer01' を、 'rt01']
    x_set = {'top'、 'r'、 'rer'、 't'、rt '}
    k_set = {' top '、' rer '、' t '、' r ' 、 'rt'、 'rr'}
    x_setが見つかりません: { 'RR'}
    k_set欠けなし

    は、Pythonでテスト:3.4.2 - openpyxl:2.4.1

    関連する問題