用Python移动文件(Windows)

0 投票
5 回答
12370 浏览
提问于 2025-04-18 01:49

我正在尝试写一个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'

我该怎么做才能让它正常工作呢?

5 个回答

0

你不能用重命名的方法把一个文件移动到另一个文件夹,但你可以用移动的方法来重命名一个文件。移动文件时可以覆盖已经存在的文件(用 /y 选项),而重命名文件则不能。

你可以用斜杠或者反斜杠,反斜杠在需要用到的时候要用两个反斜杠来表示一个,四个反斜杠则表示两个。

你的移动函数需要有一个返回值。

0

试着把路径中的反斜杠换成正斜杠:

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

试着用斜杠代替反斜杠,也就是把 \ 替换成 /。或者可以使用 r'C:\users\python\nonpython\adam.spc' 这种写法。

0

你的文件夹名字应该用斜杠,而不是反斜杠。

import os

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

os.rename(src, dest)
3

解决这个问题有三种方法:

  • 使用正斜杠:

'path/to/your/stuff'

  • 或者使用原始字符串:

r'path\to\your\stuff'

  • 或者至少要对反斜杠进行转义:

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

这样做是因为 \ 在字符串中是一个特殊字符,用来表示一些特殊的字符,比如 \n(换行符)。所以当你想动态处理路径时,这样的写法会导致问题。

撰写回答