使用从函数返回的文件作为python

时间:2019-01-08 08:13:25

标签: python

我试图在另一个接受类似.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)

两个函数都可以很好地完成工作,只是我似乎无法从第一个函数开始为第二个函数提供值。

1 个答案:

答案 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检索表示打开文件的文件名的字符串。