定义一个只包含 with 语句一部分的函数
Defining a function that includes only part of a with statement
我正在尝试定义一个函数,以便它只包含 with 语句的一部分。例如,它将包括被 ##### 截断的部分。
#####
with open(filename,'r') as fh:
contentall = fh.read().replace('\n', '')
contentall = contentall.upper()
print contentall
#####
i = contentall.count(">")
print i
我的问题是 with
语句中仍有一些我不想在我的函数中使用的内容。这可以在不创建两个不同的 with
语句的情况下完成吗?
没有。您可以将上下文管理器作为参数传递给第二个函数,但不能在两个函数定义之间共享上下文管理器。
你能不能不这样做
def getContent(filename):
with open(filename,'r') as fh:
contentall = fh.read().replace('\n', '')
contentall = contentall.upper()
return contentall
contentall = getContent(filename)
print contentall
i = contentall.count(">")
print i
您可以使用变量来启用或禁用计数行为:
def contentFunc(filename, countBool):
with open(filename, 'r') as fh:
contentall = fh.read().replace('\n',' ').upper()
print contentall
if countBool == True:
print contentall.count(">")
我正在尝试定义一个函数,以便它只包含 with 语句的一部分。例如,它将包括被 ##### 截断的部分。
#####
with open(filename,'r') as fh:
contentall = fh.read().replace('\n', '')
contentall = contentall.upper()
print contentall
#####
i = contentall.count(">")
print i
我的问题是 with
语句中仍有一些我不想在我的函数中使用的内容。这可以在不创建两个不同的 with
语句的情况下完成吗?
没有。您可以将上下文管理器作为参数传递给第二个函数,但不能在两个函数定义之间共享上下文管理器。
你能不能不这样做
def getContent(filename):
with open(filename,'r') as fh:
contentall = fh.read().replace('\n', '')
contentall = contentall.upper()
return contentall
contentall = getContent(filename)
print contentall
i = contentall.count(">")
print i
您可以使用变量来启用或禁用计数行为:
def contentFunc(filename, countBool):
with open(filename, 'r') as fh:
contentall = fh.read().replace('\n',' ').upper()
print contentall
if countBool == True:
print contentall.count(">")