5

単一のファイルを正常に処理しているPythonスクリプトがあります。forユーザーが入力したディレクトリ内のすべてのファイルを取得するループを作成しようとしています。ただし、ディレクトリ内のファイルの1つのみを処​​理しています。

以下のコードの後に​​、で分析を行う残りのスクリプトが続きますdataforどういうわけかループを閉じる必要がありますか?

import os

print "Enter the location of the files: "; directory = raw_input()
path = r"%s" % directory

for file in os.listdir(path):
    current_file = os.path.join(path, file)

    data = open(current_file, "rb")

    # Here's an abridged version of the data analysis

    for i in range(0, 10):
        fluff = data.readline()

    Input_Parameters = fluff.split("\t")

    output.write("%f\t%f\t%f\t%f\t%.3f\t%.1f\t%.2f\t%.2f\t%s\n" % (Voc, Isc, Vmp, Imp, Pmax, 100 * Eff, IscErr, 100 * (1 - (P2 / Pmax)), file))
    data.close()
4

3 に答える 3

7

一般に、何かが機能しない場合は、より簡単なものを機能させるように試みることができます。データ分析部分を削除し、以下のコードを保持しました。これは私と一緒に動作します。パスにディレクトリがある場合、開くことが失敗することに気づきました。これがあなたにも当てはまるかどうかはわかりません。

import os
import sys

path = '.'

for file in os.listdir(path):
    current = os.path.join(path, file)
    if os.path.isfile(current):
        data = open(current, "rb")
        print len(data.read())
于 2012-09-19T15:54:12.597 に答える
4

あなたの答えの現在のコードは基本的に私には問題ないように見えます。処理するファイルごとに同じファイルに書き込んでいることに気づきましたoutput。そのため、すべてを処理しているわけではないと思われるかもしれません。

于 2012-09-19T16:22:36.233 に答える
1

デバッグ用:

os.listdir(path)内のファイルの場合:
    current_file = os.path.join(path、file)
    current_fileを出力します


current_fileの出力を確認してください

ところで:あなたはタブであなたのコードをインデントしていますか?

コードにはインデントの長さが異なるためです。

これは悪いスタイルです

于 2012-09-19T15:58:41.480 に答える