2016-09-19 4 views
0

リストからループし、ファイルから情報を取得し、新しいファイルを書き、電子メールを送信してから、次の反復を繰り返してプロセスを開始します。
私はそれを書いてみると、あなたのために私のコードを見てみましょう。
リストはipaddressのリストであり、両方のファイルがテキストです。最初の比較ループ後にリスト内の次の繰り返しを呼び出す

はデフデフ私のリスト1(最初のコードブロック)を構築FILE1
からの情報をつかむ
DEFリスト1取る[0] file1とそれからFILE2(2番目のコードブロック)を構築するためにそれを適用
デフからの電子メールアドレスを取得しますリスト1 [0]
DEF FILE2
に電子メールを送信する(私はこのすべてを行うことができ、それだけでLIST1するために戻ってきています[1]私が行うことができない)
はLIST1に行く[1] FILE2の構築をfile1に適用されます電子メールを送信するなど...リストの最後まで

2 import re 
    3 
    4 def one_ip_each(): 
    5  one_ip_each = [] 
    6  global ipAddr 
    7  with open('Invalid_names_file') as Invalid_names_file: 
    8   a = [re.search(r'((\d+\.)+\d+)', line).group() for line in \ 
    9     Invalid_names_file] 
10   for x in a: 
11    if x not in one_ip_each: 
12     one_ip_each.append(x) 
13     ipAddr = x 
14    return ipAddr 
15 ## makes an iterator that interpreter can step through, yet other funciton 
16 ## complains that it's not a string 
17 #  ipAddr = iter(one_ip_each) 
18 #  return ipAddr 
19 
20 one_ip_each() 

ここ(ip-addrでは、ITERことなく)私が欲しいものを返すコードやループではない)

5 def isp_email_names(): 
    6  with open('Invalid_names_file') as Invalid_names_file: 
    7   with open('ISP_names_file', 'w') as ISP_names_file: 
    8    for line in Invalid_names_file: 
    9     if one_ip_each.ipAddr in line: 
10      ISP_names_file.write(str(line)) 
11      ISP_names_file.flush() 

は、うまくいけば、行番号で、これはいくつかの助けになるのです。

私はipAddrをグローバルにしました。私はそれを電子メール機能から呼び出して、file2が適切な人に送られていることを知ることができます。
このことが重要かどうかはわかりません。

私が取得(ライン17および18のような)ITERにip-addrでを作る場合 - >

TypeError: 'in <string>' requires string as left operand, not list_iterator 

を私は読みながら、私は学ぶことを楽しむ、まだ私がこだわっています。適切な方向に私を指し、私は質問に答えるために読んで戻ってくるでしょう。
まだ、私は人々がフィルタを構築したい、もっと多くの機能を定義したいと思っています。

私はそれがかなり簡単に私はそれを把握することはできないはずだと思います。
(ポストは一種の長いです、まだthouroughになりたかった)

+2

フォーマットあなたのコードやテキスト、または誰も助けたいん:

あなたはこれを試みることができます。 –

答えて

0
0 def isp_email_names(): 
    1  with open('Invalid_names_file') as Invalid_names_file: 
    2   with open('ISP_names_file', 'w') as ISP_names_file: 
    3    for line in Invalid_names_file: 
    4     if one_ip_each.ipAddr in line: 

ライン4、one_ip_each.ipAddrはラインがSTRで、list_iterです。 文字列にlist_iterは含まれません。

if line in one_ip_each.ipAddr 
+0

ありがとうトロイしかし、ipAddrは行の部分文字列なので、動作しません。すべての作業(ipAddr in line for file in)を見ても、出力が得られなかった。 – emetib

+0

私のテストマシンに問題があり、ピン止めしなければならないので、私はこれを保留にしています。スクリプトは他のマシンで動作していますが、まだテストしていません。皆さん、ありがとうございました。 – emetib

関連する問題