2016-03-02 34 views
-1

我想创建一个程序,将自己复制到另一个目录中以备后用。它在我的Windows 7机器上正常工作,但出于某种原因,我收到以下错误消息。os.rename移动一个文件

WindowsError: [Error 3] The system cannot find the path specified 

我已经使用py2exe将它编译为可执行文件。无论如何,这里是我的代码:

home = os.path.expanduser("~") 
installPath = home + "\Logs" 
copyPath = installPath + "\Keylogger.exe" 

def installExe(copyPath): 
    if not os.path.exists(copyPath): 
     path = os.getcwd() 
     path = os.path.join(path, "Keylogger.exe") 
     os.rename(path, copyPath) 

回答

1

打印copyPath并手动检查,如果它存在 - 它看起来合理吗? 这些反斜杠例如"\Keys""\Keylogger.exe"是它们在python字符串语法中称为转义序列的问题,所以将下列字符转换为单个字符。欲了解更多信息,请参阅文档https://docs.python.org/2.0/ref/strings.html

正确和可靠的方法来创建路径是使用os.path.join():

home = os.path.expanduser("~") 
installPath = os.path.join(home, "Logs") 
copyPath = os.path.join(installPath, "Keylogger.exe") 
+0

'os.path.join'是优选的,但''\ K''不是问题。没有'\ K'转义,所以Python将它保留在字符串文字中,就好像它被写入''\\ K''一样。问题可能是当前的工作目录不存在Keylogger.exe存在的地方。 'sys.executable'应该是冻结可执行文件的绝对路径。 – eryksun

+0

'installExe'还需要处理'Keylogger.exe'不在目标卷上的情况。 Python在调用MoveFileEx时没有指定'MOVEFILE_COPY_ALLOWED',所以'os.rename'在跨卷的情况下会失败。 – eryksun

相关问题