python - 如何将文件名作为参数传递到我的模块中?

标签 python command-line parameters module

我在 .py 文件中有以下代码:

import re

regex = re.compile(
    r"""ULLAT:\ (?P<ullat>-?[\d.]+).*?
    ULLON:\ (?P<ullon>-?[\d.]+).*?
    LRLAT:\ (?P<lrlat>-?[\d.]+)""", re.DOTALL|re.VERBOSE)

我将 .txt 文件中的数据作为一个序列:

QUADNAME: rockport_colony_SD
RESOLUTION: 10 ULLAT: 43.625 ULLON:
-97.87527466 LRLAT: 43.5 LRLON: -97.75027466 HDATUM: 27 ZMIN: 361.58401489 ZMAX: 413.38400269 ZMEAN: 396.1293335 ZSIGMA: 12.36359215 PMETHOD: 5 QUADDATE: 20001001

如何使用 Python 文件处理 .txt 文件?

我想我们需要在 .py 文件中有一个参数,这样我们就可以在终端中使用类似的语法:

$ py-file file-to-be-processed

这个问题是由帖子here提出的.

最佳答案

您需要读入文件,然后使用正则表达式搜索内容。 sys 模块包含一个列表 argv,其中包含所有命令行参数。我们拉出第二个(第一个是用来运行脚本的文件名),打开文件,然后读入内容。

import re
import sys

file_name = sys.argv[1]
fp = open(file_name)
contents = fp.read()

regex = re.compile(
    r"""ULLAT:\ (?P-?[\d.]+).*?
    ULLON:\ (?P-?[\d.]+).*?
    LRLAT:\ (?P-?[\d.]+)""", re.DOTALL|re.VERBOSE)

match = regex.search(contents)

参见 Python regular expression documentation有关可以使用匹配对象执行的操作的详细信息。参见 this part of the documentation为什么我们在扫描文件时需要搜索而不是匹配。

此代码将允许您使用您在问题中指定的语法。

关于python - 如何将文件名作为参数传递到我的模块中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/491085/

相关文章:

python - 将 CSV 数据读入 Pandas 数据框时遇到问题 (Python/Pandas)

python - 如何让 get_pressed 在 pygame 中工作?

linux - 如何使用 Bash 将柱状标记数据转换为 json?

vim - 为什么需要在映射定义中转义栏 Ex 命令分隔符,而不是在 Vim 的命令行中转义?

c# - 如何通过参数/变量更改组合框名称?

JavaScript 函数,将 HTML 作为参数传递

python - 如何在 Qtableview 中添加标题

Python Tkinter : TypeError: 'Frame' object is not callable

mysql 命令行 : How to make mysql to prompt for username and password?

android - 在 SQL Server 上使用参数和通配符