使用python移动文件(Windows)

时间:2014-04-08 07:38:49

标签: python windows python-2.7

我正在尝试编写一个将文件从一个目录移动到另一个目录的python脚本。我尝试了两种不同的解决方案,都以错误结束。

第一名:

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

(&#34;文件名,目录名或卷标的错误语法&#34;)

第二名:

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'

我该怎么做才能使这项工作?

5 个答案:

答案 0 :(得分:1)

解决此问题的3个选项:

  • 使用正斜杠:

'path/to/your/stuff'

  • 或原始字符串:

r'path\to\your\stuff'

  • 或至少逃避你的反斜杠:

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

这需要这样做,因为\是字符串中的特殊字符,用于指示\n之类的特殊字符。因此,当您想要使用路径动态工作时,这将会非常糟糕。

答案 1 :(得分:0)

尝试使用斜杠而不是反斜杠 - 将\替换为/。或使用r'C:\users\python\nonpython\adam.spc'

答案 2 :(得分:0)

您的目录名称应该是斜杠而不是反斜杠。

import os

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

os.rename(src, dest)

答案 3 :(得分:0)

尝试使用路径中的正斜杠替换反斜杠:

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

答案 4 :(得分:0)

您不能使用重命名将文件移动到另一个目录,但是可以使用move来重命名文件。 Move可以替换现有文件(使用/ y),而不能重命名。

您可以同时使用斜杠或反斜杠,需要在需要1的2个反斜杠和在需要2的4个反斜杠中转义反斜杠。

您的函数移动需要返回。