如何将文件名放入函数中?

时间:2015-09-25 14:36:09

标签: python regex

这可能是一个来自python新秀的非常愚蠢的问题。 是否可以将(文本)文件作为函数的输入?如果是,那该怎么做。

我正在使用正则表达式,我尝试使用我的函数作为从文件中选择字符串的方法,在我的例子中我称之为“文本”。文件名称为re_examples.txt。但是,它们取的是文件的名称,而不是文件中的内容。

import re

def get_first_and_last_part (text):
    matcher2 = re.compile('([a-z]+)')
    match = matcher2.search(text)
    if match != None:
        first = match.start(1)
        last = match.end(1)
        before = text[:first-1]
        after = text[last+1:]
        return before, after
    else:
        return None, None # or some other value(s)

当我用文件名作为参数调用函数时,我得到了这个结果。

get_first_and_last_part('re_examples.txt')
('re_examples.tx', 'examples.txt')

2 个答案:

答案 0 :(得分:0)

解决方案取决于您是想要修改函数本身,还是希望保持不变,只需更改传递给它的内容。

修改函数以接受文件名

如果您希望参数为文件名,只需打开文件并阅读

即可
def get_first_and_last_part (filename):
    with open(filename, "r") as f:
        text = f.read()
    matcher2 = re.compile('([a-z]+)')
    ...

保留未修改的功能

如果您想保持get_first_and_last_part未修改,请在调用函数之前打开文件:

def get_first_and_last_part(text):
    ...
with open('re_examples.txt', 'r') as f:
    text = f.read()
get_first_and_last_part(text)

答案 1 :(得分:0)

您需要先打开文件,然后使用'打开'方法。因此,您可以先打开文件,然后将文件内容传递给您的方法。要做到这一点,你可以做的就是这个

text = ""
with open(filename, 'r') as f:
    text = f.read()

# call method
get_first_and_last_part(text)