目录
TypeError: join() argument must be str or bytes not ‘list’
TypeError: join() 参数必须是 str 或 bytes 而不是 ‘list’
当我们将列表传递给方法时,会出现 Python“TypeError: join() argument must be str, bytes, or os.PathLike object, not ‘list’” os.path.join()
。
要解决该错误,请使用for
循环将列表的每一项传递给该方法,或者在调用中解压缩列表项。
下面是错误如何发生的示例。
import os my_list = ['home/alice', 'home/bob'] # ⛔️ TypeError: join() argument must be str, bytes, or os.PathLike object, not 'list' result = os.path.join('/', my_list)
我们将一个列表传递给os.path.join()
导致错误的方法。
使用for
循环解决错误
如果需要将列表中的每个字符串连接到指定的根路径,请使用
for 循环。
import os my_list = ['home/alice', 'home/bob'] for path in my_list: result = os.path.join('/', path) print(result) # 👉️ "/home/alice", "/home/bob"
我们使用for
循环遍历列表,在每次迭代中,我们使用该
os.path.join()
方法智能地连接路径。
解包列表解决错误
如果您需要将列表中的所有路径连接到一个路径中,请在对该os.path.join()
方法的调用中解压缩它们。
import os my_list = ['home', 'alice', 'images'] result = os.path.join('/', *my_list) print(result) # 👉️ /home/alice/images
os.path.join方法智能地连接一个
或多个路径。
如果提供的任何组件是绝对路径,则所有先前的组件都将被丢弃,并从绝对路径开始继续连接。
TypeError: join() 参数必须是 str 或 bytes 而不是 NoneType
None
当我们将值传递给
方法时,会出现 Python“TypeError: join() argument must be str, bytes, or os.PathLike object, not ‘NoneType’” os.path.join()
。
要解决错误,请更正分配,或提供备用值以防变量存储None
.
下面是错误如何发生的示例。
import os my_path = None # ⛔️ TypeError: join() argument must be str, bytes, or os.PathLike object, not 'NoneType' result = os.path.join('/', my_path)
我们将一个None
值传递给os.path.join()
导致错误的方法,因为该方法采用字符串参数。
None
Python 中 None 值的常见来源
最常见的None
价值来源是:
- 有一个不返回任何东西的函数(
None
隐式返回)。 - 将变量显式设置为
None
. - 将变量分配给调用不返回任何内容的内置函数的结果。
- 具有仅在满足特定条件时才返回值的函数。
不返回任何内容的函数返回 None
不显式返回值的函数 return None
。
import os # 👇️ this function returns None def get_path(): print('home/alice') # ⛔️ TypeError: join() argument must be str, bytes, or os.PathLike object, not 'NoneType' result = os.path.join('/', get_path())
您可以使用return 语句从函数返回值。
import os def get_path(): return 'home/alice' result = os.path.join('/', get_path()) print(result) # 👉️ '/home/alice'
该函数现在返回一个字符串,因此一切都按预期进行。
检查变量是否不存储 None
如果您需要在使用该方法之前if
检查变量是否未存储值,
请使用语句。None
os.path.join()
import os my_path = None if my_path is not None: result = os.path.join('/', my_path) print(result) else: # 👇️ this runs print('variable stores a None value')
或者,您可以提供一个空字符串作为后备(如果适合您的用例)。
import os my_path = None if my_path is None: my_path = '' result = os.path.join('/', my_path) print(result) # 👉️ '/'
sort()
)可以就地改变原始对象并返回None
。确保您没有将调用一个的结果存储在变量中。
os.path.join方法智能地连接一个
或多个路径。
如果提供的任何组件是绝对路径,则所有先前的组件都将被丢弃,并从绝对路径开始继续连接。
有一个只有在满足条件时才返回值的函数
错误的另一个常见原因是具有仅在满足条件时才返回值的函数。
import os def get_path(p): if len(p) > 10: return p my_path = get_path('alice') print(my_path) # ⛔️ TypeError: join() argument must be str, bytes, or os.PathLike object, not 'NoneType' result = os.path.join('/', my_path)
if
函数中的语句仅get_path
在传入参数的长度大于 时运行10
。
None
。要解决错误,您要么必须检查函数是否没有返回
None
,要么在不满足条件时返回默认值。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: