【问题标题】:How to show me output of python argparse script, result of print exits command prompt如何显示 python argparse 脚本的输出,打印结果退出命令提示符
【发布时间】:2020-06-19 11:03:12
【问题描述】:

我对 Python 还是比较陌生。 我应该编写一个 Python 脚本,在特定条件下打印出所有文件和目录: 你可以在下面找到练习的解释。

我的课程脚本语言练习的解决方案似乎没有打印实际结果,我已经搜索并尝试过,但我看不出它有什么问题。毕竟它应该是解决方案。

假设的解决方案:

from pathlib import Path
import argparse
from pathlib import Path
import os
import re


def minimum_size(size):
    def check(filename):
        return os.path.getsize(filename) >= size



parser = argparse.ArgumentParser(prog='find')
parser.add_argument('path', default='.')
parser.add_argument('--minimum-size', dest='minimum_size', default=0, type=int)
parser.add_argument('--maximum-size', dest='maximum_size', default=float('inf'), type=int)
parser.add_argument('--no-directories', dest='no_directories', default=False, action='store_true')
parser.add_argument('--no-files', dest='no_files', default=False, action='store_true')
parser.add_argument('--extension', dest='extension')
parser.add_argument('--contains', dest='contains')

args = parser.parse_args()


path = Path(args.path)
for entry in path.glob('**/*'):
    if not os.path.getsize(entry) >= args.minimum_size:
        continue

    if not os.path.getsize(entry) <= args.maximum_size:
        continue

    if args.no_directories and os.path.isdir(entry):
        continue

    if args.no_files and os.path.isfile(entry):
        continue

    if args.extension and not entry.suffix == args.extension:
        continue

    if args.contains:
        if not os.path.isfile(entry):
            continue

        with open(entry, 'r') as file:
            contents = file.read()

            if not re.search(args.contains, contents):
                continue

    print(entry)

解释:

我自己对此的看法:我认为这些示例在调用文件时应该包含扩展名,所以我在尝试执行代码时会这样做。 我什至包含了文件的整个路径,这样我就不会收到“ObjectNotFound”错误。 当我在 Python 中的 Powershell 中运行解决方案时,命令提示符会立即打开和关闭。 当我直接在 Powershell 中运行它时,命令提示符会打开,列出所有输出并在完成后立即关闭。如果您能给我一种方法来阻止命令提示符关闭,以便我可以看到结果。我已经很高兴了。

Write a script `find.py` that prints out all files and directories
that satisfy certain conditions.

The following functionality must be supported:

* One positional parameter that specifies the directory in which to start looking recursively.
* `--minimum-size=N`: only files whose size is at least `N` must be listed.
* `--maximum-size=N`: only files whose size is at most `N` must be listed.
* `--no-directories`: don't list directories.
* `--no-files`: don't list files.
* `--extension=EXT`: only list entries with extension `EXT`
* `--contains=REGEX`: only list files whose contents match `REGEX`.

To get a better feel for how your script should work, feel free
to experiment with the solution. For example, try

`bash
# List everything starting from two directories up
$ python find ../..

# List all python files in current directory
$ python find --extension=.py .
`

【问题讨论】:

  • 这不是 Python 问题;无论您的终端模拟器是什么,它都配置为在该窗口中运行的程序完成后关闭一个窗口。
  • 我应该在网站上问一个关于如何配置它的不同问题,还是有一个快速的答案?
  • 如果您找到了自己问题的解决方案,请将其作为答案分享。不要在问题中包含答案。
  • @Paolo:这样可以吗?

标签: python powershell command-prompt argparse pathlib


【解决方案1】:

而不是在 Powershell 中运行脚本,它使用命令提示符来执行脚本。直接在命令提示符下运行脚本,以便查看输出。

在 Visual Studio Code 中更改终端:单击当前终端以查看下拉菜单,然后单击“选择默认 Shell”。从选项中选择“命令提示符”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    相关资源
    最近更新 更多