簡體   English   中英

Python - 使用字典中的值重命名路徑(for循環)

[英]Python - Renaming path using values from a dictionary (for loop)

我正在重命名一批照片。 我在 CSV 中有一個圖像編號列表(來自相機)和適當的名稱(作為新名稱)。 到目前為止,我已經很好地導入了 csv 導入。 它將其作為字典導入,圖像名稱作為“鍵”,文本作為新名稱作為“值”。

問題:使用附加到路徑的“密鑰”時,它工作得很好。 但是當使用“值”時,我得到一個空列表。 調用類型時,它會顯示字符串。

import os
from os.path import dirname
import glob

path = r"C:\Users...\Rename"

所有相關文件都在這個“重命名”文件夾中

import csv
with open('Rename\Rename.csv', mode='r') as infile:
reader = csv.reader(infile)
with open('Rename\Rename_new.csv', mode='w') as outfile:
    writer = csv.writer(outfile)
    mydict = {rows[0]:rows[1] for rows in reader}

打印給出:

{'DSC01162.JPG':'WI-22-62_Bx1-4_5.45-14.45m_Dry','DSC01164.JPG':'WI-22-62_Bx1-4_5.45-14.45m_Wet'}

for key, value in mydict.items():
    value = list(mydict.values())[0]

print(key, value) 給出:

DSC01162.JPG WI-22-62_Bx1-4_5.45-14.45m_Dry DSC01164.JPG WI-22-62_Bx1-4_5.45-14.45m_Dry

    old_file = glob.glob(path + "/" + key)
    new_file = glob.glob(path + "/" + value)

打印 old_file 給出正確的: ['C:\...Rename/DSC01162.JPG']

而打印 new_file 給出和空列表: []

一旦我得到這個正確,我將使用:

os.rename(old_file, new_file)

關於如何正確獲取“new_file”地址的任何想法?

我在 python 上不是那么好,所以一些完全不同的方法可能太令人困惑了。

當您嘗試獲取 old_file 並重命名 new_file (如果它在 for 循環內部或外部)時,我實際上並沒有得到,但我有一些事情要指出:

首先:看起來你在Windows上,所以盡量保持相同的文件夾樣式:使用'\'而不是'/'

第二:在您的for loop中,您已經返回了keyvalues ,因此語句value = list(mydict.values())[0]是不必要的。

然后,在您的for loop中,您可以在那里重命名舊文件名:

for key, value in mydict.items():
    old_file = glob.glob(path + "/" + key)
    new_file = glob.glob(path + "/" + value)
    os.rename(old_file, new_file)

在字典 ( mydict ) 中擁有舊名稱和新名稱后,您就不需要list()了。 你可以這樣做:

import os

path = r".\rename"
mydict = {'DSC01162.JPG': 'WI-22-62_Bx1-4_5.45-14.45m_Dry', 'DSC01164.JPG': 'WI-22-62_Bx1-4_5.45-14.45m_Wet'}

for key, value in mydict.items():
    old_file = os.path.join(path, key)
    new_file = os.path.join(path, value + '.JPG')
    os.rename(old_file, new_file)

如果我正確理解了這個問題,那將完成工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM