【发布时间】:2012-03-06 04:19:00
【问题描述】:
我正在研究如何在 Python 中进行文件输入和输出。我编写了以下代码来将文件中的名称列表(每行一个)读取到另一个文件中,同时根据文件中的名称检查名称并将文本附加到文件中的出现处。该代码有效。能不能做得更好?
我想对输入和输出文件使用with 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.
'''
outfile = open(newfile, 'w')
with 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)
outfile.close()
return # Do I gain anything by including this?
# input the name you want to check against
text = input('Please enter the name of a great person: ')
letsgo = filter(text,'Spanish', 'Spanish2')
【问题讨论】:
-
“意味着我需要将名称存储在一个临时位置”?你能解释一下你的意思吗?
-
请注意,
filter()是 a built-in function,因此您可能应该为您的函数选择一个不同的名称。 -
@Tom 命名空间中的函数是否覆盖了内置函数?
-
@UpTide:是的,Python 以 LEGB 顺序运行——本地、封闭、全局、内置(参见 stackoverflow.com/questions/291978/…)。所以,如果你做一个全局函数(
filter()),它会在内置的filter()之前被发现
标签: python file python-3.x file-io io