2009-08-13 2 views
1
class __init__: 
    path = "articles/" 
    files = os.listdir(path) 
    files.reverse() 

    def iterate(Files, Path): 

     def handleXml(content): 

      months = ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] 

      parse = re.compile('<(.*?)>(.*?)<(.*?)>').findall(content) 
      day = parse[1][1] 
      month = months[int(parse[2][1])] 
      dayN = parse[3][1] 
      year = parse[4][1] 
      hour = parse[5][1] 
      min = parse[6][1] 
      amPM = parse[7][1] 
      title = parse[9][1] 
      author = parse[10][1] 
      article = parse[11][1] 
      category = parse[12][1] 

     if len(Files) > 5: 
      del Files[5:] 

     for file in Files: 
      file = "%s%s" % (Path, file) 
      f = open(file, 'r') 
      handleXml(f.read()) 
      f.close() 

    iterate(files, path) 

これは起動時に実行され、ファイル配列をチェックするとすべてのファイル名が含まれます。 しかし、私はそれらをループしても機能しません、最初のものだけが表示されます。 私がファイルを返すと、最初の2つしか得られません。また、重複したファイルであっても解析すると、同じではありません。 これはどれも意味をなさない。ディレクトリ内のすべてを読み込んで解析するためのPythonループ

私は、Pythonを使って簡単なブログを作るしようとしていますし、私のサーバーは、私はグロブのようなモジュールを使用することはできませんのPythonの非常に古いバージョンを持っているので、すべてのものは、できるだけ基本にする必要があります。

ファイルの配列は、私にとっては十分ですディレクトリ内のすべてのファイルが含まれています。 articlesディレクトリ内の他のディレクトリを調べる必要はありません。私も重複したファイルに、出力解析しようとすると、

は、しかし、私は異なる結果が得られます。

おかげで、

  • トム
+0

あなたが投稿したコードは、反復()関数を呼び出していない、と何も印刷されません。完全なコードを投稿してください。 –

+0

また、字下げは間違っています。これは明らかにPythonでは非常に重要です。テキストエディタとまったく同じように修正してください。 –

答えて

1

のためにそれができる:それは同様に元のリストから最後の5つの項目を削除し

del Files[5:] 

。代わりにdelを使用しての、あなたが試すことができます:

for file in Files[:5]: 
    #... 
+0

動作しませんでしたが、2行を削除して元の配列を保存するのが良い方法です。私の配列は問題ではありません – Tom

0

コメントで述べたように、実際の再帰が不足しています。
コードの他の場所にあっても、再帰呼び出しが問題のある典型的な場所です。このため、再確認することをお勧めします。

しかし、なぜあなたはos.walkを使用していませんか?それは、(再帰的な)車輪を再発明する必要なしに、すべての経路を反復する。しかし、2.3で導入されました。あなたのPythonがどれほど古いのか分かりません。

+0

おかげで、それが何か他のものです。配列を印刷すると、すべてのファイルが表示されます。 – Tom

+0

配列の長さを確認できますか?すべてのファイル名がスペースで区切られた1-2の文字列要素が配列されている可能性があるため、私は尋ねています。 –

関連する問題