python tryexcep

2024-10-01 17:24:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个代码:

#! /usr/bin/python
import sys, string

def findAll(search, fh):
    count = 0
    for line in fh:
        count += 1
        if line.find(search) != -1:
            print "%3d: %s"%(count, line.rstrip())
    return count

search = raw_input("Enter string to be found: ")
filename = raw_input("Enter filename: ")
fh = open(filename, "rU")
findAll(search, fh)

我的教授建议我编写这段代码并加入“改进的用法”。
我不知道怎么做,但她推荐了

  1. 我通过注释掉raw_input()语句来修改程序,然后添加语句来检查程序是否使用少于2个参数调用,如果是,则添加print 'Usage: findstring.py string filename。代码接受字符串并在文件中定位它们。

  2. 我使用来自sys.argvfilename命令行参数打开文件,并为发生输入/输出错误(IOError)做好准备。然后使用一个try-except块来编码打开文件是否有效的操作。
    如果打开失败,I print 'Error: cannot open findstring.py,其中findstring.py也是被考虑的文本文件。

老实说。。。我忙着把她的建议写下来,以致于我不知道该怎么做她推荐的许多事情。有人能帮助改进这个代码吗?我很困惑,我不知道该怎么做。我的教授说代码可以运行,但我不知道如何修改它。


Tags: 文件代码pyinputsearchstringrawcount
1条回答
网友
1楼 · 发布于 2024-10-01 17:24:07

为了提高使用率,请尝试使用argparse模块。它使使用命令行选项更容易。

http://docs.python.org/library/argparse.html#module-argparse

来自上述链接的代码示例如下:

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                   help='an integer for the accumulator')
parser.add_argument(' sum', dest='accumulate', action='store_const',
                   const=sum, default=max,
                   help='sum the integers (default: find the max)')

args = parser.parse_args()
print args.accumulate(args.integers)

现在考虑如何修改作业的示例。您需要使用字符串(搜索术语、文件名)而不是整数。

对于try/exceptive块,请记住处理错误的代码位于块的除部分中。也就是说,您可以考虑在除块中显示错误消息。

相关问题 更多 >

    热门问题