Python允许将多个open()语句放在一个单独的。你可以用逗号分隔。您的代码将是:
def filter(txt, oldfile, newfile):
'''\
Read a list of names from a file line by line into an output file.
If a line begins with a particular name, insert a string of text
after the name before appending the line to the output file.
'''
with open(newfile, 'w') as outfile, open(oldfile, 'r', encoding='utf-8') as infile:
for line in infile:
if line.startswith(txt):
line = line[0:len(txt)] + ' - Truly a great person!\n'
outfile.write(line)
# input the name you want to check against
text = input('Please enter the name of a great person: ')
letsgo = filter(text,'Spanish', 'Spanish2')
不,你不会通过在函数结束时显式返回来获得任何东西。你可以使用return提前退出,但是你在结束时,函数将退出而没有它。 (当然有返回值的函数,你使用return指定要返回的值。)
在引入了with语句时,或者在Python 2.6中,在Python 2.5中不支持使用多个open()项目,但在Python 2.7和Python 3.1或更高版本中支持。
如果你正在编写必须在Python 2.5,2.6或3.0中运行的代码,请嵌套with语句作为建议的其他答案或使用contextlib.nested。