yxxxzx123 发表于 2024-3-13 08:40:23

PySide6求教~~

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'

请问这是什么问题?

FishC 发表于 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 小助理,如未能正确解答您的问题,请继续追问。

不二如是 发表于 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是从函数返回或通过其他复杂逻辑构建的,确保该过程没有意外地生成元组。

yxxxzx123 发表于 2024-3-13 11:31:36

不二如是 发表于 2024-3-13 10:07
鱼油遇到的错误提示表明:




您这回复更专业!!

yxxxzx123 发表于 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。。。。

请问要怎么实现?
页: [1]
查看完整版本: PySide6求教~~