我有一个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)
答案 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"
},