繁体   English   中英

Python重命名程序中的错误...没有这样的文件或目录(Fnmatch)

[英]Bug in Python Renaming Program…No such file or Directory (Fnmatch)

我正在尝试构建一个小的重命名程序,以帮助我节省未来的时间。 基本上它会遍历我指向的目录,如果符合某些条件,则重命名文件。

我已经写了我需要的东西但是我在一开始就有一个我无法弄清楚的错误。

这是代码:

import os
import fnmatch

for file in os.listdir("""/Users/Desktop/TESTME"""):
    if fnmatch.fnmatch(file,'MISC*'):
        os.rename(file, file[4:12] + '-13-Misc.jpg')

当我尝试运行它时,我得到了这个:

Traceback (most recent call last):
  File "/Users/Documents/Try.py", line 6, in <module>
    os.rename(file, file[4:12] + '-13-Misc.jpg')
OSError: [Errno 2] No such file or directory

我也试过这个:

if fnmatch.fnmatch(file,'MISC*'):
    fun = file[4:12] + '-13-Misc.jpg'
    os.rename(file, fun)

但我得到同样的东西。

它没有将文件识别为文件。 我是以错误的方式来做这件事的吗?

您需要包含要重命名的文件名的完整路径

import os
import fnmatch

directory = "/Users/Desktop/TESTME"
for file in os.listdir(directory):
    if fnmatch.fnmatch(file, 'MISC*'):
        path = os.path.join(directory, file)
        target = os.path.join(directory, file[4:12] + '-13-Misc.jpg'
        os.rename(path, target)

os.path.join函数使用您平台的正确目录分隔符智能地将路径元素连接成一个整体。

函数os.listdir()仅返回给定目录中文件的文件名,而不是它们的完整路径。 您可以使用os.path.join(directory, file_name)来重建文件的完整路径。

您也可以在bash中执行此操作:

cd /Users/Desktop/TESTME/
for f in MISC*; do mv "$f" "${f:4:8}-13-Misc.jpg"; done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM