有没有更好/更干净的方法来格式化这张纸条

2024-09-29 17:22:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python很陌生(编写了4个脚本来清理文件夹和移动一些东西),现在我有了一个新的挑战

我有一个csv文件,里面有一些pdf的数据(pdf的名称,需要打印的时间等等)

我有下面的代码atm和一切工作正常,但我发现它“不干净”,我希望有一个更好的方式来格式化一些东西。 这是我的密码:

import csv, shutil, os

with open('\\\\fatboy.leleu.be\\Psm\\Mailing Templates\\OhGreen\\Verwerking\\OhGreen POS week 19.csv') as csvfile:
    csvReader = csv.reader(csvfile, delimiter=';')
    rows = csv.reader(csvfile)
    headers = next(rows)

    for row in csvReader:
        NAAM = row[0]
        Formaat = row[1]
        Tekstkleur = row[2]
        Gouvy = row[3]
        LouvainLaNeuve = row[4]
        Nannine = row[5]
        Tournai = row[6]
        SaintGeorges = row[7]
        Aarschot = row[8]
        Balen = row[9]
        Ekeren = row[10]
        Ninove = row[11]
        SintKatelijneWaver = row[12]
        Olen = row[13]
        Zwijndrecht = row[14]

        if Gouvy > "0":
            file = NAAM + ".pdf"
            path = ("\\\\fatboy.leleu.be\\Psm\\Mailing Templates\\OhGreen\\Verwerking\\" + Formaat + "\\" + file)
            dest = ("\\\\fatboy.leleu.be\\Psm\\Mailing Templates\\OhGreen\\Verwerking\\2print\\" + Formaat + "\\" + NAAM + "_GOUVY" + ".pdf")
            shutil.copy(path, dest)
            print(dest , " changed name and moved to ", dest)

        if LouvainLaNeuve > "0":
            file = NAAM + ".pdf"
            path = ("\\\\fatboy.leleu.be\\Psm\\Mailing Templates\\OhGreen\\Verwerking\\" + Formaat + "\\" + file)
            dest = ("\\\\fatboy.leleu.be\\Psm\\Mailing Templates\\OhGreen\\Verwerking\\2print\\" + Formaat + "\\" + NAAM + "_LOUVAIN_LA_NEUVE" + ".pdf")
            shutil.copy(path, dest)
            print(dest , " changed name and moved to ", dest)

        if Nannine > "0":
            file = NAAM + ".pdf"
            path = ("\\\\fatboy.leleu.be\\Psm\\Mailing Templates\\OhGreen\\Verwerking\\" + Formaat + "\\" + file)
            dest = ("\\\\fatboy.leleu.be\\Psm\\Mailing Templates\\OhGreen\\Verwerking\\2print\\" + Formaat + "\\" + NAAM + "_NANNINE" + ".pdf")
            shutil.copy(path, dest)
            print(dest , " changed name and moved to ", dest)

此代码适用于csv中的每个城市名称(总共12个) 我想找个办法把这个弄干净。 比如我不需要为每个城市做一个if循环,也不需要为所有的标题名做一个循环等等

欢迎任何提示。 PS:我不会使用Pandas,因为我无法正确安装它,而且它在basic python中已经可以正常工作了


Tags: csvpdfbetemplatesfiledestrowmailing
1条回答
网友
1楼 · 发布于 2024-09-29 17:22:25

首先,将字符串存储为变量。您似乎经常重复使用同一个字符串,因此如果将其存储为变量BASE\u PATH,则可以执行以下操作:

BASE_PATH = "\\\\fatboy.leleu.be\\Psm\\Mailing\\Templates\\OhGreen\\Verwerking\\"
path = BASE_PATH + Formaat + "\\" + file

甚至

BASE_PATH = "\\\\fatboy.leleu.be\\Psm\\Mailing\\Templates\\OhGreen\\Verwerking\\{}\\{}"
path = BASE_PATH.format(Formaat, file)

其次,可以将要检查的变量存储为字典,并在其键上循环。例如:

BASE_PATH = "\\\\fatboy.leleu.be\\Psm\\Mailing\\Templates\\OhGreen\\Verwerking\\{}\\{}"
DEST_PATH = "\\\\fatboy.leleu.be\\Psm\\Mailing\\Templates\\OhGreen\\Verwerking\\2print\\{}\\{}.pdf"
name_index_mapping = {
  "GOUVY": 3,
  "LOUVAIN_LA_NEUVE": 4,
  "NANNINE": 5
}

for (name, index) in name_index_mapping.items():
  if row[index] > "0":
    file = NAAM + ".pdf"
    path = BASE_PATH.format(Formaat, file)
    dest = DEST_PATH.format(Formaat, NAAM, name)
    shutil.copy(path, dest)
    print(path, "changed name and moved to", dest)

最后,您确定需要将值与文字字符串"0"而不是数字0进行比较吗?使用greater/smaller than逻辑比较字符串可能会产生意外的结果

相关问题 更多 >

    热门问题