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
语句在屏幕上打印的路径愚弄了。您认为您看到的是函数返回的内容。