簡體   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