Python Windows Popen(shlex.分离(命令),shell=False导致OSError:[Errno 2]没有这样的文件或目录

2024-09-29 05:22:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我运行的代码在OSX中运行良好,但在Windows上会导致错误:

command = "C:\\progra~2\\itms\\iTMSTransporter -m verify -f /Volumes/Stuff/Temp/TMP_S_0_V_TV2.itmsp -u username -p password -o /Volumes/Stuff/Temp/TMP_S_0_V_TV2.itmsp/LOGFILE.txt -s provider -v eXtreme"
self.process1 = Popen(shlex.split(command), shell=False, stdin=PIPE)

我在Windows上收到的错误是:

^{pr2}$

为什么Windows会出错?在


Tags: 代码windows错误temptmpcommandverifyosx
1条回答
网友
1楼 · 发布于 2024-09-29 05:22:13

由于删除了\个字符,shlex.split()会破坏路径。让我们检查一下:

import shlex
command = "C:\\progra~2\\itms\\iTMSTransporter -m verify -f  Volumes/Stuff/Temp/TMP_S_0_V_TV2.itmsp -u username -p password -o /Volumes/Stuff/Temp/TMP_S_0_V_TV2.itmsp/LOGFILE.txt -s provider -v eXtreme"
print shlex.split(command)

['C:progra~2itmsiTMSTransporter', '-m', 'verify', '-f', '/Volumes/Stuff/Temp/TMP_S_0_V_TV2.itmsp', '-u', 'username', '-p', 'password', '-o', '/Volumes/Stuff/Temp/TMP_S_0_V_TV2.itmsp/LOGFILE.txt', '-s', 'provider', '-v', 'eXtreme']

如您所见,可执行文件的路径不正确(C:progra~2itmsiTMSTransporter),所以Popen找不到它。在

将路径分隔符更改为/,这在两种Linux/Windows环境中都是安全的:

^{pr2}$

Popen()将正确处理此路径。在

相关问题 更多 >