-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. 虽然它不会导致 a 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 回答