鱼C论坛

 找回密码
 立即注册
查看: 669|回复: 4

[已解决]PySide6求教~~

[复制链接]
发表于 2024-3-13 08:40:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
PySide6中报错:

source_path = os.path.join(os.getcwd(), Base_Workbook)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen ntpath>", line 147, in join
  File "<frozen genericpath>", line 152, in _check_arg_types
TypeError: join() argument must be str, bytes, or os.PathLike object, not 'tuple'

请问这是什么问题?
最佳答案
2024-3-13 10:07:13
鱼油遇到的错误提示表明:

在调用os.path.join方法时传入的参数中,有一个或多个不是字符串(str)、字节串(bytes)或路径对象(os.PathLike)类型。具体来说,错误提示指出Base_Workbook变量是一个元组(tuple),而不是上述三种可接受类型之一。

解决这个问题的方法取决于Base_Workbook变量的预期用途和内容。

如果Base_Workbook本应是一个路径字符串,那么您需要检查为什么它是一个元组,并进行相应的修正。

如果Base_Workbook应该是单一路径字符串:

确认在将Base_Workbook传给os.path.join之前,它已被正确赋值为一个字符串而非元组。

如果Base_Workbook包含多个路径片段:

如果Base_Workbook是一个包含多个路径片段的元组,您需要将这些片段解包为os.path.join的参数。这可以通过使用星号*操作符来实现,该操作符将元组的元素作为独立的参数传递给函数。

示例代码:
# 假设 Base_Workbook 是包含多个路径片段的元组
Base_Workbook = ("folder1", "subfolder2", "file.txt")

# 使用 * 操作符解包元组,并将元素作为独立参数传递给 os.path.join
source_path = os.path.join(os.getcwd(), *Base_Workbook)

检查赋值逻辑:
审查Base_Workbook的赋值逻辑,确保它按预期赋值为路径字符串或路径片段的序列。

如果Base_Workbook是从函数返回或通过其他复杂逻辑构建的,确保该过程没有意外地生成元组。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-3-13 08:40:37 | 显示全部楼层
这个问题是因为`os.getcwd()`函数返回的结果是一个元组(tuple),而`os.path.join()`函数需要的参数必须是字符串(str)、字节(bytes)或者类似路径的对象(os.PathLike)。所以你需要确保`Base_Workbook`变量是一个字符串,或者将`os.getcwd()`的结果转换成字符串。

你可以通过以下两种方法解决这个问题:

方法一:将`Base_Workbook`变量转换成字符串
source_path = os.path.join(os.getcwd(), str(Base_Workbook))

方法二:将`os.getcwd()`的结果转换成字符串
source_path = os.path.join(str(os.getcwd()), Base_Workbook)

无论你选择哪种方法,都应该确保`Base_Workbook`变量是一个有效的字符串。希望这能帮到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-13 10:07:13 | 显示全部楼层    本楼为最佳答案   
鱼油遇到的错误提示表明:

在调用os.path.join方法时传入的参数中,有一个或多个不是字符串(str)、字节串(bytes)或路径对象(os.PathLike)类型。具体来说,错误提示指出Base_Workbook变量是一个元组(tuple),而不是上述三种可接受类型之一。

解决这个问题的方法取决于Base_Workbook变量的预期用途和内容。

如果Base_Workbook本应是一个路径字符串,那么您需要检查为什么它是一个元组,并进行相应的修正。

如果Base_Workbook应该是单一路径字符串:

确认在将Base_Workbook传给os.path.join之前,它已被正确赋值为一个字符串而非元组。

如果Base_Workbook包含多个路径片段:

如果Base_Workbook是一个包含多个路径片段的元组,您需要将这些片段解包为os.path.join的参数。这可以通过使用星号*操作符来实现,该操作符将元组的元素作为独立的参数传递给函数。

示例代码:
# 假设 Base_Workbook 是包含多个路径片段的元组
Base_Workbook = ("folder1", "subfolder2", "file.txt")

# 使用 * 操作符解包元组,并将元素作为独立参数传递给 os.path.join
source_path = os.path.join(os.getcwd(), *Base_Workbook)

检查赋值逻辑:
审查Base_Workbook的赋值逻辑,确保它按预期赋值为路径字符串或路径片段的序列。

如果Base_Workbook是从函数返回或通过其他复杂逻辑构建的,确保该过程没有意外地生成元组。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-13 11:31:36 | 显示全部楼层
不二如是 发表于 2024-3-13 10:07
鱼油遇到的错误提示表明:

您这回复更专业!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-13 13:19:37 | 显示全部楼层
不二如是 发表于 2024-3-13 10:07
鱼油遇到的错误提示表明:

Base_Workbook = QFileDialog.getOpenFileName(self, "指定基础工作簿", self.File_Path)

print('所指定的基础工作簿为:', Base_Workbook)

打印结果为:“所指定的基础工作簿为:('E:/Temp/事业单位统计表0/123.xls', 'All Files (*)')”

其实我只要文件名,Base_Workbook =123.xls。。。。

请问要怎么实现?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 10:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表