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

Python 要将类型为None的目录的字符串和路径写入文件吗,python,concat,Python,Concat,我有一个从函数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]

我有一个从函数
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
 whatever: /Users/xyz/temp/pro/data_repo/poc/MAY-M-13/PZT-MAY-2/events/derived/sam
现在我需要将上面的路径(字符串)附加到另一个字符串。上述字符串被检测为非类型,而不是字符串。在本例中,我无法将其与另一个字符串连接。当我尝试连接时,它会抛出以下错误

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
,如下所示:

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
 whatever: /Users/xyz/temp/pro/data_repo/poc/MAY-M-13/PZT-MAY-2/events/derived/sam
我还尝试了
str(pathorganizer(raw,outdir))
,然后它返回
doc

该文件编写为

whatever: Nonesam

如果
if
语句失败,则
pathorganizer
函数可以返回
None

在您的例子中,由于
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/"

函数
pathorganizer
似乎返回
None
。为什么您认为字符串
/Users/xyz。。。派生的
涉及到这个问题?pathorganizer到底是怎么回事?它甚至不是有效的Python语法。。。。这与
pandas
有什么关系?路径“/Users/xyz/temp/pro/data_repo/poc/MAY-M-13/PZT-MAY-2/events/derived/”的类型如何为None?函数返回路径,路径的数据类型为
NoneType
,正如对其执行
type()
操作时所述。@Idlehands,什么东西连python语法都没有?谢谢,有道理!此更改正在生成所需的输出。@user1017373:那么您是否了解出了什么问题,以及为什么上面的更改会修复问题?是的,我知道
print
返回的是None,因此如果我在return obils中调用它,它将只返回None。我想你被
print
语句在屏幕上打印的路径愚弄了。您认为您看到的是函数返回的内容。