2016-03-02 65 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

相關問題