我想创建一个函数,读取txt文件,删除每行的前导空格和尾随空格,然后写入文件,默认覆盖我读入的文件,但是可以选择写入新文件。 这是我的代码。
def cleanfile(inputfile, outputfile = inputfile):
file1 = open(inputfile,'r')
file2 = open(outputfile, 'w')
lines = list(file1)
newlines = map(lambda x: x.strip(), lines)
newlines = list(newlines)
for i in range(len(newlines)):
file2.write(newlines[i] + '\n')
file1.close()
file2.close()
cleanfile('hw.txt',)
cleanfile('hw.txt','hw_2.txt')
但它给了我错误。 NameError:name' inputfile'未定义
如何解决这个问题并实现我的目标?非常感谢你。
答案 0 :(得分:0)
None
作为默认值并检查它。
def cleanfile(inputfile, outputfile = None):
if outputfile is None:
outputfile = inputfile
file1 = open(inputfile,'r')
file2 = open(outputfile, 'w')
lines = list(file1)
newlines = map(lambda x: x.strip(), lines)
newlines = list(newlines)
for i in range(len(newlines)):
file2.write(newlines[i] + '\n')
file1.close()
file2.close()
cleanfile('hw.txt',)
cleanfile('hw.txt','hw_2.txt')
答案 1 :(得分:-1)
您不能将outputfile = inputfile设置为默认参数。这是Python的限制 - ' inputfile'在指定默认参数时,它不作为变量存在。
您可以使用哨兵值:
sentinel = object()
def func(argA, argB=sentinel):
if argB is sentinel:
argB = argA
print (argA, argB)
func("bar") # Prints 'bar bar'
func("bar", None) # Prints 'bar None'