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

Python 如何将文件名放入函数中?,python,regex,Python,Regex,这里可能有一个非常愚蠢的问题来自python新手。 是否可以将(文本)文件作为函数的输入?如果是,如何做 我正在使用正则表达式,我尝试使用我的函数作为从文件中选择字符串的方法,在我的例子中,我称之为“text”。文件名称为re_examples.txt。但是,它们取而代之的是文件名,而不是文件中的内容 import re def get_first_and_last_part (text): matcher2 = re.compile('([a-z]+)') match = m

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

我正在使用正则表达式,我尝试使用我的函数作为从文件中选择字符串的方法,在我的例子中,我称之为“text”。文件名称为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')

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

修改函数以接受文件名 如果希望参数为文件名,只需打开文件并读取即可

def get_first_and_last_part (filename):
    with open(filename, "r") as f:
        text = f.read()
    matcher2 = re.compile('([a-z]+)')
    ...
保持函数不变 如果要保持未修改的
get\u first\u和\u last\u 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)

您需要首先使用“打开”方法打开文件。因此,您可以首先打开该文件并将该文件的内容传递给您的方法。要做到这一点,你能做的就是

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

# call method
get_first_and_last_part(text)

是的,你可以选择:1
打开
外部文件并传入生成的文件句柄;或2。传入文件名并在函数中打开它。但是Python不会看到一个看起来像文件的字符串,并且认为“我知道,他们可能希望打开该文件”,您需要明确表示。