我试图在另一个接受类似.txt
的对象的函数中使用一个函数编写的os.path
文件。我的问题是输入参数时会显示错误消息
TypeError:预期的str,字节或os.PathLike对象,而不是_io.TextIOWrapper
以下是我正在尝试做的简单形式。
def myfunction1(infile, outfile):
with open(infile, 'r') as firstfile:
#do stuff
with open(outfile, 'w+') as secondfile:
secondfile.write(stuff)
return(outfile)
def myfucntion2(infile, outfile):
infile=myfunction1(infile, outfile)
with open(infile, 'r') as input:
#do stuff
with open (outfile, 'w+') as outfile2:
outfile2.write(stuff)
return(outfile)
两个函数都可以很好地完成工作,只是我似乎无法从第一个函数开始为第二个函数提供值。
答案 0 :(得分:1)
您的函数返回文件句柄,而不是字符串。
文件句柄具有name
属性,因此,如果您的意思确实是这样,则可以通过在return (outfile.name)
中使用myfunction1
来修复它。或者如果更适合您的情况,可以在infile = myfunction1(infile, outfile).name
中使用myfunction2
。或者,由于返回的是open
的结果,所以就不要再尝试open
了,只需直接使用返回的文件句柄即可。
input=myfunction1(infile, outfile)
#do stuff
with open (outfile, 'w+') as outfile2 ...
摘要:open
想要一个包含文件名的字符串作为输入,并返回文件句柄。您可以使用open(thing).name
检索表示打开文件的文件名的字符串。