Bonjour à tous,
Je bricole de plus en plus en python et cette fois je m'attaque aux class (je dev plus en php) et surtout j'essaie d'organiser mon projet. J'écris un programme pour automatiser la création de fichier pdf à partir de fichier csv extrait d'un ERP. La base en là mais je bloque sur le passage d'une variable d'une class à une autre.
Lorsque je lance le programme j'ai :
Si je comprends bien, l'objet config n'est pas accessible dans la class PDF, mais c'est ici que s'arrête mes connaissances python :( Est-ce que vous avez des pistes pour que je puisse continuer l'écriture du programme ?Code:
1
2
3
4
5
6
7
8
9
10
11
12 {'root': '/home/xxxxx/Scripts', 'source': '/import', 'export': '/export', 'assets': '/assets', 'font': 'helvetica', 'font_size': 10, 'marge_all': 85, 'marge_left': 10, 'marge_top': 10, 'marge_right': 10} Traceback (most recent call last): File "/home/xxx/Scripts/x3topdf/./main.py", line 94, in <module> main(sys.argv) File "/home/xxx/Scripts/x3topdf/./main.py", line 85, in main pdf.add_page() File "/home/xxx/.local/lib/python3.10/site-packages/fpdf/fpdf.py", line 787, in add_page self.header() File "/home/xxx/Scripts/x3topdf/modules/pdf.py", line 6, in header self.image(config['root'] + "/" + config['assets'] + "/logo.png", 10, 8, 33) NameError: name 'config' is not defined
Merci d'avance.
Structure
main.pyCode:
1
2
3
4
5 +main.py +config.json +modules/ +-- tools.py +-- pdf.py
tools.pyCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #!/usr/bin/python # -*- coding: utf-8 -*- import sys, datetime, csv from modules.tools import tools from modules.pdf import PDF def createVar(f, v): globals()[f] = v def main(argv=None): config = tools.loadConfig() print(config) pdf = PDF() pdf.set_font(config['font'], size=config['font_size']) pdf.set_margin(config['marge_all']) pdf.set_margins(config['marge_left'], config['marge_top'], config['marge_right']) file = csv.DictReader(open(config['root'] + "/" + config['source'] + "/FACHIL21040400.csv", "r"), delimiter="|") [...] if __name__ == "__main__": main(sys.argv)
pdf.pyCode:
1
2
3
4
5
6
7
8
9
10
11 import json class tools: def loadConfig(): try: with open('./config.json', 'r') as fichier: config = json.load(fichier) return config except FileNotFoundError: print("Fichier de configuration illisible") exit(1)
Code:
1
2
3
4
5
6
7
8
9
10 # https://pyfpdf.github.io/fpdf2/fpdf/fpdf.html from fpdf import FPDF class PDF(FPDF): def header(self): self.image(config['root'] + "/" + config['assets'] + "/logo.png", 10, 8, 33) self.set_font(config['font'], "B", 11) self.cell(60) [...] Tronqué car l'erreur est présente dès le début