想将类型为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/"
我有一个从函数 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/"