1

csv ファイルが配置されているディレクトリがあります。コードはファイルを読み取り、ファイル内のデータに基づいてヒストグラムを作成します。

ただし、コマンドラインでcsvファイルの列ヘッダーの1つを入力でき、コードが指定されたコマンドのグラフのみを作成するようにしようとしています。例: python histogram_maker.py "C:/Folder" エリア。

できましたが、csvファイルに指定されていないコマンドを入力した場合にエラーメッセージを出す部分を追加したいです。例: 境界が存在しません。コードの何が問題になっていますか? 何かが存在する場合でも、コマンド プロンプトで「存在しません」と 20 回表示されますが、それでも必要なすべてのファイルが作成されます。この繰り返しを停止して、csv ファイルに何かが含まれていない場合にのみエラーが発生するようにするにはどうすればよいですか。

        for column in df:
            os.chdir(directory)
            if len(sys.argv)>2:
                for x in arguments:
                    if x.endswith(column):
                       #code for histogram
                    else: 
                        print "does not exist"
4

2 に答える 2

6

一致する引数が 1 つしかない場合でも、すべての引数をテストしています。一致しない引数ごとに、エラー メッセージを出力します。

any()関数を使用して、一致するものがあるかどうかを確認します。

if len(sys.argv)>2:
    if any(x.endswith(column) for x in arguments):
        #code for histogram
    else: 
        print "does not exist"

またはテストを反転します。早期に使用notして救済する:

if len(sys.argv)>2:
    if not any(x.endswith(column) for x in arguments):
        print "does not exist"
        sys.exit(1)

    #code for histogram

ジェネレーター式を使用すると理解しにくい場合any()でも、ループを使用できますが、ループを早期に終了するforために使用する必要があり、ループが早期に終了しなかったときに実行されるスイートを使用する必要があります。breakelse:for

for x in arguments:
    if x.endswidth(column):
        break  # found a match
else:
    # `for` loop was not exited, so no match found
    print "does not exist"
    sys.exit(1)
于 2013-08-08T14:36:05.033 に答える
0

こういうの欲しいかも…。

    for column in df:
        os.chdir(directory)
        if len(sys.argv)>2:
            found = False
            for x in arguments:
                if x.endswith(column):
                   found = True
                   #code for histogram
                   break
            if (found == False):
                print "does not exist"
于 2013-08-08T14:39:17.797 に答える