【问题标题】:os.rename fail with [Errno 2] No such file or directoryos.rename 失败并显示 [Errno 2] No such file or directory
【发布时间】:2017-05-26 14:07:36
【问题描述】:

在 python 中使用 os.rename 并得到 '[Errno 2] No such file or directory'

完整代码:

import os
from string import digits # digits are one of 0123456789

path = "/Users/xxx/Documents/version-control/secret-msg/prank/"
l = os.listdir(path) # returns list of files in folder
for o in l: #o for 'original'
    c = o.lstrip(digits) # c for 'clean', without leading digits; lstrip = left strip - so left strip any digit
    if (o != c):
        os.rename (o, c) #rename original filename to clean one
        print o + '-> ' + c # for debug only

【问题讨论】:

  • 您正在列出目录“/Users/xxx/Documents/version-control/secret-msg/prank/”的内容,但是在使用 os.rename 时,您没有引用它,所以该方法在 current 目录中查找名称为 o 的文件。更改目录,或引用文件的完整路径(原始和重命名)

标签: python rename listdir


【解决方案1】:

listdir 返回文件列表没有路径

所以,你应该这样做:

import os
import os.path
from string import digits # digits are one of 0123456789

path = "/Users/xxx/Documents/version-control/secret-msg/prank/"
l = os.listdir(path) # returns list of files in folder
for o in l: #o for 'original'
    c = o.lstrip(digits) # c for 'clean', without leading digits; lstrip = left strip - so left strip any digit
    if (o != c):
        os.rename (os.path.join(path, o),
                   os.path.join(path, c) #rename original filename to clean one
        print o + '-> ' + c # for debug only

我们使用os.path.join 来连接文件名的路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-07
    • 2017-07-05
    • 2018-11-20
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2019-03-25
    相关资源
    最近更新 更多