如何修复此错误:[WinError 267]目录名称无效:

时间:2018-06-02 08:49:26

标签: python path pyqt5 qlistwidget

我有一个python脚本,可以创建一个GUI应用程序,在用户选择路径后显示现有文件列表。

系统显示在 QlistWidget fileName及其parentFolder中。

我想从列表中获取所选文件的完整路径

示例: C:\ Users \ test \ Desktop \ test_arabic.docx

系统显示以下错误:

  

[WinError 267]目录名无效:   'C:\ Users \用户测试\桌面\ test_arabic.docx'

如何解决此错误。

注意:我使用self.fullpath变量作为全局变量。

        print("chdir ==> {}".format(os.chdir(PureWindowsPath(self.fullPath))))

上面的代码是导致错误的原因。我试图将当前目录路径更改为文件的选定路径。

def eventFilter(self, obj, event):
            try:


                if self.listWidgetPDFlist.viewport() == obj and event.type() == QtCore.QEvent.MouseMove:
                    #*********


                    it = self.listWidgetPDFlist.itemAt(event.pos())
                    print("it ==>{}".format(it.text()))
                    ##*********
                    Item=str(it.text())
                    print("item ==> {}".format(Item))
                    print("full path ==>{}".format(PureWindowsPath(self.fullPath)))


                    print("chdir ==> {}".format(os.chdir(PureWindowsPath(self.fullPath))))
                    parentFile =Path().resolve().parent

                    print("parent file ==>{}".format(parentFile))

                    selectedFile = os.path.join(str(parentFile,Item))
                    print("selectedFile ==>{}".format(selectedFile))

                    if self.hoverItem != it:
                        message = selectedFile

                        QtWidgets.QToolTip.showText(QtGui.QCursor.pos(), 
                            message, 
                            self.listWidgetPDFlist.viewport(), 
                            self.listWidgetPDFlist.visualItemRect(it))
                        self.hoverItem = selectedFile

            except Exception as e:
                print(e)

            return QtWidgets.QMainWindow.eventFilter(self, obj, event)

2 个答案:

答案 0 :(得分:1)

传递给os.chdir()函数的参数无效,因为它不是目录,而是文件路径。您需要从中排除文件名,然后将其传递给os.chdir()

os.chdir(PureWindowsPath(os.path.dirname(self.fullPath)))

答案 1 :(得分:0)

在我的例子中,我试图在 Visual Studio Code 中调试 Python 测试用例,当我为测试定义/方法点击调试测试时,我得到 [WinError 267] 目录名称无效:错误

我通过更新启动配置中的“cwd”参数解决了

websiteDataStore

{
        "name": "Unit Testing",
        "type": "python",
        "request": "test",
        "cwd": "${workspaceFolder}/src"
    },