0

编写脚本以帮助在重命名图像时进行数据迁移。好像当我尝试filename从内部循环中访问变量时,它只是在打印.DS_Store

例如,请参阅注释行:

#!/usr/bin/env python
import os
import csv

FILE_PATH = '/Users/admin/Desktop/data-migration/images/product'
COUNT = 0

with open('paths_formatted.csv') as csvfile:
    reader = csv.reader(csvfile)

    # Walk the tree.
    for root, directories, files in os.walk(FILE_PATH):

        for filename in files:

            # Join the two strings in order to form the full filepath.
            filePath = os.path.join(root, filename)

            #print(filePath) - this results in the actual file path

            for row in reader:

                #print(filePath) - this results in .DS_Store

                oldFilePath = row[1].strip()
                displayName = row[0].strip()
                colour = row[2].strip()


                if " " in colour:
                    colour = colour.replace(" ", "-")

                slashIndex = oldFilePath.rfind("/")         
                oldFileName = oldFilePath[slashIndex+1:]

                if oldFileName == filename:

                    number = 1;
                    newFileName = displayName + "_" + colour + "-" + str(number) + ".jpg"
                    while os.path.exists(FILE_PATH + leadingPath + newFileName):
                        number = number + 1
                        newFileName = filePath, displayName + "_" + colour + "-" + str(number)

                    os.rename(newFileName)
                    COUNT = COUNT+1

print(COUNT)

为什么会这样?

根据评论更改我的代码后,将结果存储在列表中,现在for root, directories, files in os.walk(FILE_PATH):没有被执行。

我验证了它的FILE_PATH存在并将其打印到控制台,它也有内容。

我的新代码如下:

#!/usr/bin/env python
import os
import csv

FILE_PATH = '/Users/admin/Desktop/data-migration/images/product'
COUNT = 0

productInfo = []

with open('paths_formatted.csv') as csvfile:
    reader = csv.reader(csvfile)

    for row in reader:
        productInfo.append(row)

for root, directories, files in os.walk(FILE_PATH):

    for filename in files:

        for info in productInfo:

            displayName = info[0]
            oldFilePath = info[1]
            colour = info[2]

            slashIndex = oldFilePath.rfind("/")         
            oldFileName = oldFilePath[slashIndex+1:]

            if " " in colour:
                colour = colour.replace(" ", "-")

            if oldFileName == filename:

                number = 1;
                newFileName = displayName + "_" + colour + "-" + str(number) + ".jpg"

                while os.path.exists(FILE_PATH + leadingPath + newFileName):
                    number = number + 1
                    newFileName = filePath, displayName + "_" + colour + "-" + str(number) + ".jpg"

                os.rename(newFileName)
                COUNT = COUNT + 1

print(COUNT)
4

0 回答 0