-1

私はpython/repyが初めてです。現在のディレクトリのファイルのリストに文字列が存在するかどうかを判断しようとしています。これは私のコードです。

def checkString(filename, string):
input = file(filename) # read only will be default file permission
found = false
searchString = string
for line in input:
    if searchString in line:
        found = true
    break

if callfunc == 'initialize':
    print listdir() #this will print list of files

for files in listdir():
    checkString(files,"hello")

if found:
    print "String found"
else:
    print "String not found"

エラーとは何ですか?どうすれば解決できますか?

これをUbuntu 12.04 LTSで実行しています

Full debugging traceback:
"repy.py", line 448, in <module>
"repy.py", line 179, in main
"/home/hardik_darji/REPY/seattle/seattle_repy/virtual_namespace.py", line 78, in     __init__

ユーザーのトレースバック:

Exception (with type 'exceptions.ValueError'): Code failed safety check! Error: ("<type 'exceptions.IndentationError'> expected an indented block (line 13)",)
4

1 に答える 1

4

ここにはいくつかの問題があります。

  1. for ループ、if ステートメント、else ステートメントの最後にコロンがありません。
  2. スペルを間違えましたFalseand True(Python では大文字と小文字が区別されます)。
  3. インデントがオフになっています (これが単なる SO フォーマット エラーかどうかはわかりません)。
  4. が発生することはありませんが、スクリプトを適切に機能させるには、1 レベル深くするSyntaxError必要があります。break
  5. を実行してファイルを閉じる必要がありますinput.close()

コードは次のようになります。

def checkString(filename, string):
    input = file(filename) # read only will be default file permission
    found = False
    searchString = string
    for line in input:
        if searchString in line:
            found = True
            break

    if callfunc == 'initialize':
        print listdir() #this will print list of files
        print "\n"

    for files in listdir():
        checkString(files,"hello")

    if found:
        print "String found"
    else:
        print "String not found"
    input.close()

また、変数に名前を付けないことをお勧めします。これinputは組み込みを覆い隠してしまいます。

with最後に、ファイルを操作するステートメントを 調べる必要があります。withファイルを自動的に閉じるコンテキストマネージャーです。

于 2013-10-12T22:44:42.963 に答える