2012-03-08 11 views
-2
import ftplib 
import re 
import string 
ftp = ftplib.FTP('') # For access FTP link. 
ftp.login ("") 
ftpdir = ftp.cwd('') 
data=[] 
ftp.dir(data.append) 
for line in data: 
    string.find("DIR","data") 
    if "DIR" in line: 
      print line 

このコードでは、FTPサーバーに存在するDIR名のリストを取得しました。ここで、最後にリスト内に存在するDIRを見つけることができます。リスト内に最後に存在するDIRを見つける方法

私の出力は、次のとおりです。

12-09-11 10:04PM  <DIR>   mcl_201147_hw79u_05 
    12-08-11 01:19AM  <DIR>   mcl_201148_hw79u_02 
    12-16-11 12:53PM  <DIR>   mcl_201149_hw79u_07 
    12-25-11 12:11AM  <DIR>   mcl_201150_hw79u_05 
    01-07-12 12:00AM  <DIR>   mcl_201151_hw79u_04 
    01-07-12 11:37PM  <DIR>   mcl_201152_hw79u_05 
    01-17-12 01:06AM  <DIR>   mcl_201201_hw79u_04 
    01-29-12 12:52AM  <DIR>   mcl_201202_hw79u_04 
    02-04-12 01:06AM  <DIR>   mcl_201203_hw79u_03 
    02-11-12 01:28AM  <DIR>   mcl_201204_hw79u_05 
    02-17-12 01:12AM  <DIR>   mcl_201205_hw79u_05 
    02-19-12 01:22AM  <DIR>   mcl_201206_hw79u_05 
    03-02-12 02:24AM  <DIR>   mcl_201207_hw79u_05 
    03-04-12 02:01AM  <DIR>   mcl_201208_hw79u_05 
    03-05-12 12:25PM  <DIR>   mcl_201209_hw79u_06 

は、私はこれがリストである場合は、リスト内の最後のDIRの存在(03-05-12 12:25のmcl_201209_hw79u_06)

答えて

1

を見つけたい、あなたはこの

を行います
try: 
    return data[-1] 
except IndexError as e: 
    return e 
// in your code you can just print "e" and you can continue like this... 

// version two demonstrate why try, except is useful 

def getdir(data): 
    try: 
    data[-1] 
    except IndexError as e: 
    return e 

.... 
print getdir(data)  
print 1+1 

と仮定何かがリストのインデックスを作成すると間違っている、プログラムが停止しません。

list index out of range 
2 

これはあなたが望むものですか?


有用であるために、あなたはe(エラーメッセージ)を追跡するためにロガーを使用する必要があり、その代わりに、デフォルト値(のようなNone)を返しますので、間違った/何のディレクトリが存在しないものがある知っています。

そして、ここではstringモジュールの使用がわかりません。リストに必要なものが見つかっただけの場合、私はほとんどそのモジュールを使用しません。


私にこれらの説明を与えて元の投稿を編集してください。

  1. くれprint line
  2. の結果を与えてくれ、これはあなたが望むdir何であるかprint data
  3. の結果を与えますか?

私の質問に答えながら、あなたはおそらくそれを解決する方法を見つけることができます。

ありがとうございました。


大丈夫です。だから私は、それぞれの行は、フォームのレコードであることを前提としています

12-09-11 10:04PM <DIR> mcl_201147_hw79u_05 あなたがtimeを維持する方法、<DIR>、独立dir-nameを持っていない、あなたは

mystring = "12-09-11 10:04PM  <DIR>   mcl_201147_hw79u_05" 
dirname = mystring.split(" ")[-1] 
// ['12-09-11', '', '10:04PM', '', '', '', '', '', '', '<DIR>', '', '', '', '', '', '', '', '', '', 'mcl_201147_hw79u_05'] 
// and [-1] indicates the last element in the list (in reverse order) 

にあなたをこれを行うだろうと仮定すると、 ' '.join(mystring.split())を試してからsplit()(引数なし)を適用することもできますが、splitをすぐに実行する方が、最初のメソッドが1つのリストを作成するだけで、2つのリストが作成されるので、

linesがまだstrタイプでない場合は、str(line)が役立つかどうかを確認してください。

dirnameをすべて検索する必要がある場合は、list comprehensionを入力してください。それはループよりも効率的であると考えられています。それはあなたが達成しようとしていたものをコンパクトに書く方法です...もちろん、あなたの要求に応じて適切なストリッピングをしてください。

+0

ありがとう..私は、FTPの場所に異なる種類のファイルを持っています。私はすべてのディレクトリ名を取得すると、DIRのみを取得します.DIRは最後の場所にあります。 – user1227493

+0

@ user1227493申し訳ありませんが、要件をよく理解していません。それでは 'データ 'には何がありますか?ディレクトリとファイル?あなたは '最後の場所にディレクトリのプレゼントを見つけるのはどういう意味ですか? '私の編集を参照してください。 – CppLearner

+0

0:52

mcl_201202_hw79u_04 02-04-12 1:06 AM mcl_201203_hw79u_03 02-11-12 1:28 AM mcl_201204_hw79u_05 02-17-12 1:12 AM mcl_201205_hw79u_05 2月19日is01-29-12私の出力-12 1:22 AM mcl_201206_hw79u_05 03-02-12 2時24分AM mcl_201207_hw79u_05 03-04-12 2時01分AM mcl_201208_hw79u_05 03-05-12 12:25 mcl_201209_hw79u_06 私は最後のDIRの存在を見つけたいですリスト(03-05-12 12:25 PM mcl_201209_hw7 9u_06) – user1227493

0
import ftplib # For access FTP module 
ftp = ftplib.FTP('') # For access FTP link 
ftp.login ('') 
ftpdir = ftp.cwd('Working Directory') 
list = [] 
ftp.dir(list.append) # append all the ftp files in list 
temp = [] # Temp list 
for item in list: 
    if item.find('DIR') != -1: 
     temp.append(item) 
a = 0    
for item in temp: 
    a = a + 1 
print temp[-1] 

最後に、私たちはすべてのディレクトリのリストをフィルタリングすることができ、その後、我々は最後に配置されているディレクトリを見つけることができます上記のコードの助けを借りて、私の問題を解決することができています。すべてのおかげで助けになりました。

関連する問題