python 3.3用户输入单元

2024-09-30 01:34:24 发布

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

我需要创建一个python3.3程序,该程序在文件中搜索特定的字符串,并在找到该字符串时打印该行。我有一些可以工作的代码,但是每次我想运行它时,我都不得不重写程序。在

import re
fh = open('C:\Web_logs\ex130801.txt')
for line in fh:
    if "admin_" in line:
        print(line)

有没有一种方法可以接受用户对文件路径的输入,即C:\Web_logs\ex130801.txt?在


Tags: 文件字符串代码inimport程序retxt
3条回答

您可以使用3.2中新增的argparse module。在

首先,导入文件顶部的库:

import argparse

然后,创建一个解析器对象,告诉它您正在查找两个命令行字符串,第一个是文件名,第二个是您要搜索的字符串:

^{pr2}$

然后,在命令行上运行parser对象,获取一个包含要查找的字段的对象(如字符串):

args = parser.parse_args()

现在,”args.文件名“包含您的文件名和”字符串.args“包含搜索字符串,因此请按如下方式重写循环:

fh = open(args.filename)
for line in fh:
    if args.searchstring in line:
        print(line)

从命令行,您的一个用户现在可以执行以下操作:

$ python3 searcher.py /usr/dict/words bana

最好的部分是,如果用户未能给出要查找的参数,脚本会很好地告诉他们您要查找的语法:

$ python3 searcher.py
usage: searcher.py [-h] filename searchstring
searcher.py: error: the following arguments are required: filename, searchstring

更好的是,用户可以输入帮助选项来获取程序的文档:

python3 .\searcher.py  help
usage: searcher.py [-h] filename searchstring

searches a file for a specific string and prints the line if the string is found.

positional arguments:
  filename      file to search through
  searchstring  string to look for

optional arguments:
  -h,  help    show this help message and exit

别忘了你还可以加上#!/将usr/bin/python3放在代码的顶部并更改可执行标志,那么就不必在命令行中键入python3。在

当然,您可以使用^{} list从命令行读取文件名:

import sys

with open(sys.argv[1]) as fh:
    for line in fh:
        if "admin_" in line:
            print(line)

您需要在命令行中使用文件名调用脚本:

^{pr2}$

另一个选择是使用^{} function在脚本运行时要求用户输入文件名:

filename = input('Please enter a filename: ')    
with open(filename) as fh:
    for line in fh:
        if "admin_" in line:
            print(line)
import re
path = input("Please enter path to file: ")
fh = open(path)
for line in fh:
    if "admin_" in line:
        print(line)

完成后记得关闭文件!一种更具python风格的方法,假设您不需要对文件执行其他操作:

^{pr2}$

一旦离开该块,with语句将关闭file对象。在

相关问题 更多 >

    热门问题