猿问

想写一个字符串和目录路径,类型为 None 到一个文件中

我有一个从函数调用的路径pathorganizer,如下所示。


该功能pathorganizer如下所示,


def pathorganizer(raw,output):

    for root,sub,file in os.walk(raw):

        for folders in sub:

            if folders.startswith("raw"):

                patient_id_raw = root.split(os.sep)[8]

    for outdir,outsub,outfile in os.walk(output):

        for folders in outsub:

            if folders.startswith("raw"):

                patient_id_output = outdir.split(os.sep)[8]

            #print(outdir)   

            if folders.startswith("derived"):

                if patient_id_output == patient_id_raw:

                    path = print(outdir + "/derived/")

                    #path = str(path)

                    return(path)


 pathorganizer(raw,outdir)

         /Users/xyz/temp/pro/data_repo/poc/MAY-M-13/PZT-MAY-2/events/derived/

 type(pathorganizer(raw,outdir))

         /Users/xyz/temp/pro/data_repo/poc/MAY-M-13/PZT-MAY-2/events/derived/

         NoneType

现在我需要将上述路径(字符串)附加到另一个字符串。上面的字符串被检测为 NoneType,而不是字符串。在这种情况下,我无法将它与另一个字符串连接起来。当我尝试连接时,它抛出以下错误,


TypeError: can only concatenate str (not "NoneType") to str

这是我尝试过的,


for sam in list:

    file = sam + '.doc'

    with open(file, 'w') as my_file:

         my_file.write("whatever: "   + pathorganizer(raw,outdir)  + sam + "\n")

我想知道在这种情况下如何编写或连接我的值。我的目标是.doc写成如下,


 whatever: /Users/xyz/temp/pro/data_repo/poc/MAY-M-13/PZT-MAY-2/events/derived/sam

我也试过了str(pathorganizer(raw,outdir)),然后它返回doc


该文件被写为,


whatever: Nonesam


茅侃侃
浏览 161回答 1
1回答

BIG阳

如果语句失败,您的pathorganizer函数可以返回。Noneif在您的情况下,似乎由于print产生了输出,因此if语句已经找到了一些东西。这里发生了什么:path = print(outdir + "/derived/")是print返回None然后:return(path)正在返回那个None。因此,无论哪种情况,您的函数都会返回None.将函数的最后几行更改为:if folders.startswith("derived"):    if patient_id_output == patient_id_raw:        return outdir + "/derived/"
随时随地看视频慕课网APP

相关分类

Python
我要回答