2014-04-08 45 views
0

我正在嘗試編寫一個將文件從一個目錄移動到另一個目錄的python腳本。我試過兩種不同的解決方案,都以錯誤結尾。用python移動文件(Windows)

第一:

import os 

os.rename('C:\users\python\nonpython\adam.spc','C:\users\python\target\adam.spc') 

給出錯誤

Traceback (most recent call last): 
    File "C:/Users/Python/movefile.py", line 4, in <module> 
    os.rename('C:\users\python\nonpython\adam.spc','C:\users\python\target\adam.spc') 
WindowsError: [Error 123] Felaktig syntax för filnamn, katalognamn eller volymetikett 

( 「爲文件名,目錄名或卷標語法錯誤」)

號之二:

import shutil 

def move(src, dest): 
    shutil.move(src, dest) 

src='C:\users\python\nonpython\Adam.spc' 
dest='C:\users\python\target\Adam.spc' 

move(src,dest) 

給出錯誤

Traceback (most recent call last): 
    File "C:/Users/Python/movefile2.py", line 9, in <module> 
    move(src,dest) 
    File "C:/Users/Python/movefile2.py", line 4, in move 
    shutil.move(src, dest) 
    File "C:\Python27\lib\shutil.py", line 301, in move 
    copy2(src, real_dst) 
    File "C:\Python27\lib\shutil.py", line 130, in copy2 
    copyfile(src, dst) 
    File "C:\Python27\lib\shutil.py", line 82, in copyfile 
    with open(src, 'rb') as fsrc: 
IOError: [Errno 22] invalid mode ('rb') or filename: 'C:\\users\\python\nonpython\\Adam.spc' 

我應該怎麼做才能做到這一點?

回答

0

嘗試使用斜線代替反斜槓 - 用/替換\。或使用r'C:\users\python\nonpython\adam.spc'

+0

r是什麼意思? – user2536262

+0

原始字符串 - https://docs.python.org/2/reference/lexical_analysis.html#string-literals – WeaselFox

0

您的目錄名稱應該有斜槓而不是反斜槓。

import os 

src = 'C:/users/python/nonpython/Adam.spc' 
dest = 'C:/users/python/target/Adam.spc' 

os.rename(src, dest) 
0

嘗試用着更換你的反斜槓反斜槓的路徑:

os.rename('C:/users/python/nonpython/adam.spc','C:/users/python/target/adam.spc') 
0

3個選項來解決這個問題:

  • 使用正斜槓:

'path/to/your/stuff'

  • 或原始字符串:

r'path\to\your\stuff'

  • 或者至少逃不出你的反斜線:

'path\\to\\your\\stuff'

這需要做的,因爲\是一個規範字符串中的字符,用於指示特殊字符,如\n。因此,當您想要使用路徑進行動態工作時,這會很糟糕。