【问题标题】:Moving files with python (Windows)使用 python (Windows) 移动文件
【发布时间】:2014-04-08 07:38:48
【问题描述】:

我正在尝试编写一个将文件从一个目录移动到另一个目录的 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

("文件名、目录名或卷标的语法错误")

第二个:

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'

我应该怎么做才能完成这项工作?

【问题讨论】:

    标签: python windows python-2.7


    【解决方案1】:

    解决此问题的 3 个选项:

    • 使用正斜杠:

    'path/to/your/stuff'

    • 或原始字符串:

    r'path\to\your\stuff'

    • 或者至少避开你的反斜杠:

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

    这是因为\是字符串中的特殊字符,用于表示\n等特殊字符。因此,当您想要动态处理路径时,这将非常糟糕。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      【解决方案3】:

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

      import os
      
      src = 'C:/users/python/nonpython/Adam.spc'
      dest = 'C:/users/python/target/Adam.spc'
      
      os.rename(src, dest)
      

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

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

          您可以同时使用斜杠或反斜杠,反斜杠需要在需要 1 个的地方使用 2 个反斜杠,在需要 2 个的地方使用 4 个反斜杠。

          您的函数移动需要返回。

          【讨论】:

            猜你喜欢
            • 2018-10-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-02-11
            • 2014-06-08
            相关资源
            最近更新 更多