想将类型为None的字符串和目录路径写入文件

Want to write a string and path of directory whose type is None into a file

我有一个从函数 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)),然后就returns doc

文件写成,

whatever: Nonesam

如果 if 语句失败,您的 pathorganizer 函数可以 return None

在你的情况下,似乎因为 print 产生了一个输出,所以 if 语句找到了一些东西。

这里发生了什么:

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

print是returning None然后:

return(path) 是 return None.

所以在任何一种情况下你的函数 returns None.

将函数的最后几行更改为:

if folders.startswith("derived"):
    if patient_id_output == patient_id_raw:
        return outdir + "/derived/"