Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否有更好/更清晰的方式格式化此脚本_Python_Python 3.x_Csv_Shutil_Reader - Fatal编程技术网

Python 是否有更好/更清晰的方式格式化此脚本

Python 是否有更好/更清晰的方式格式化此脚本,python,python-3.x,csv,shutil,reader,Python,Python 3.x,Csv,Shutil,Reader,我对python非常陌生(编写了4个脚本来清理文件夹和移动一些东西),现在我有了一个新的挑战 我有这个csv文件,其中包含一些pdf的数据(pdf的名称、需要打印的时间等) 我有下面的atm代码,一切正常,但我发现它“不干净”,我希望有更好的方式格式化一些东西。 这是我的代码: import csv, shutil, os with open('\\\\fatboy.leleu.be\\Psm\\Mailing Templates\\OhGreen\\Verwerking\\OhGreen P

我对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,因为我无法正确安装它,而且它在基本python中已经可以正常工作了。首先,将字符串存储为变量。您似乎经常重复使用同一字符串,因此如果将其存储为变量BASE_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\u PATH=“\\\\fatboy.leleu.be\\Psm\\Mailing\\Templates\\OhGreen\\Verwerking\\{}”
DEST_PATH=“\\\\fatboy.leleu.be\\Psm\\Mailing\\Templates\\OhGreen\\Verwerking\\2print\\{}\\{}.pdf”
名称\索引\映射={
“GOUVY”:3,
“LOUVAIN_LA_NEUVE”:4,
“南九”:5
}
对于名称索引映射中的(名称,索引)。项()
如果行[索引]>“0”:
file=NAAM+“.pdf”
path=BASE\u path.format(格式,文件)
dest=dest_PATH.format(格式、NAAM、名称)
shutil.copy(路径,目标)
打印(路径“更改名称并移动到”,目的地)

最后,您确定需要将值与文本字符串
“0”
而不是数字
0
进行比较吗?使用
大于/小于
逻辑比较字符串可能会产生意外结果。

首先,将字符串存储为变量。您似乎经常重复使用同一字符串,因此如果将其存储为变量BASE_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\u PATH=“\\\\fatboy.leleu.be\\Psm\\Mailing\\Templates\\OhGreen\\Verwerking\\{}”
DEST_PATH=“\\\\fatboy.leleu.be\\Psm\\Mailing\\Templates\\OhGreen\\Verwerking\\2print\\{}\\{}.pdf”
名称\索引\映射={
“GOUVY”:3,
“LOUVAIN_LA_NEUVE”:4,
“南九”:5
}
对于名称索引映射中的(名称,索引)。项()
如果行[索引]>“0”:
file=NAAM+“.pdf”
path=BASE\u path.format(格式,文件)
dest=dest_PATH.format(格式、NAAM、名称)
shutil.copy(路径,目标)
打印(路径“更改名称并移动到”,目的地)

最后,您确定需要将值与文本字符串
“0”
而不是数字
0
进行比较吗?使用
大于/小于
逻辑比较字符串可能会产生意外结果。

这个问题可能更适合codereview.stackexchange.com。不过,一定要先阅读他们的提交指南。这个问题可能更适合codereview.stackexchange.com。不过,一定要先阅读他们的提交指南。