首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用os模块重命名python文件

使用os模块重命名python文件
EN

Stack Overflow用户
提问于 2017-05-11 23:41:29
回答 3查看 121关注 0票数 0

这就是脚本

代码语言:javascript
复制
import os
x = os.listdir("/media/virus/Data/Songs/Taylor swift/Taylor Swift - 1989 (Deluxe Version)")
for i in x:
    print i 
    os.rename(i,i[20:])

错误显示如下

代码语言:javascript
复制
virus@ShashwatVirus ~ $ python plsdelete.py 
01 - Taylor Swift - Welcome To New York.mp3
Traceback (most recent call last):
  File "plsdelete.py", line 5, in <module>
    os.rename(i,i[20:])
OSError: [Errno 2] No such file or directory

os模块正确地列出了文件,但是当我尝试重命名时出现了问题,我还签入了/usr/lib/python 2.7

EN

回答 3

Stack Overflow用户

发布于 2017-05-11 23:44:48

listdir返回给定文件夹内的文件名,但不返回其完整路径。os.rename不知道您认为您正在查看该特定文件夹中的文件。您只是在没有上下文的情况下给它起了文件名。

您可以使用os.path.join构建这些文件名的路径,以便将文件夹路径连接到文件名。

代码语言:javascript
复制
folder = "/media/virus/Data/Songs/Taylor swift/Taylor Swift - 1989 (Deluxe Version)"
filenames = os.listdir(folder)
for filename in filenames:
    oldpath = os.path.join(folder, filename)
    newpath = os.path.join(folder, filename[20:])
    os.rename(oldpath, newpath)
票数 1
EN

Stack Overflow用户

发布于 2017-05-11 23:47:51

您需要将路径添加到传递给rename的文件名

代码语言:javascript
复制
import os
my_dir = "/media/virus/Data/Songs/Taylor swift/Taylor Swift - 1989 (Deluxe Version)"
x = os.listdir(my_dir)
for i in x:
    print i 
    os.rename(os.path.join(my_dir, i), os.path.join(my_dir, i[20:]))
票数 0
EN

Stack Overflow用户

发布于 2017-05-11 23:54:50

这样啊,原来是这么回事

我只是通过添加以下内容更改了工作目录

os.chdir("/media/virus/Data/Songs/Taylor swift/Taylor Swift - 1989 (Deluxe Version)")

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43920041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档