2009-01-29 49 views
7

我有.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 -file来处理。 txt文件?

我想,我们需要在.py文件的参数,这样我们就可以在终端使用的语法,如:

$ py-file file-to-be-processed 

这个问题是由后here提高。

+0

安德鲁的答案是提供你所要求的一切。 – Geo 2009-01-29 10:52:37

回答

17

您需要读取文件,然后使用正则表达式搜索内容。 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为什么我们需要搜索而不是匹配。

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

相关问题