Hello word!

Je debute sous python et cherche a realiser un script qui lit un fichier csv et reordonne les colonnes et les cellules.

Pour se faire j ai ecris un script qui fonctionne correctement. (il lit un fichier csv specifie, puis redispache les colonnes et cellules dans differents fichiers csv).
Maintenant je voudrais qu il soit plus flexible en creant un interface graphique. Je me suis donc penche sur Tkinter et ai essaye de creer une fenetre avec un menu pour choisir le fichier a traiter et un bouton "Process" qui execute le workflow.

C est a ce niveau que j obtiens une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
line 15, in transform
file = open(nomfichier, "rb")
NameError: global name 'nomfichier' is not defined

J ai essaye un bon nombre de modifications sans reussir a corriger le probleme. Si quelqu un avait la gentillesse de m apporter ses lumieres ca serait vraiment cool.

Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
 
import csv
from Tkinter import *
import os
from tkFileDialog import askopenfilename
 
 
 
class OrganiseCSV:
 
        def __init__(self,fileIn):
                self.fileIn = str(fileIn)
                self.fichier=str(fileIn)
 
        def transform(self):
                file = open(nomfichier, "rb")
                outPole="Pole_"+nomfichier
 
                try:
                        reader = csv.reader(file)
              #je vous epargne les details de la suite de la fonction
 
 
 
class mywidgets:
        def __init__(self,root):
                frame=Frame(root)
                self.makeMenuBar(frame)
                frame.pack()
                return
 
        #defines menubar
        def makeMenuBar(self,frame):
                menubar = Frame(frame,relief = RAISED,borderwidth = 1)
                menubar.pack()
                mb_file = Menubutton(menubar,text = 'file')
                mb_file.pack(side = LEFT)
                mb_file.menu = Menu(mb_file)
                mb_file.menu.add_command(label = 'open',command = self.file_open)
                mb_edit = Button(menubar,text = 'process', command = self.process)
                mb_edit.pack(side = LEFT)
 
                mb_file['menu'] = mb_file.menu
                return
        #defines file_open which is called when file option openis choosen
        #displays the files giving the user choice to choose  file
        def file_open(self):
                filename =askopenfilename(filetypes=[("allfiles","*"),("csv files","*.csv")])
                print filename
                fname=os.path.basename(filename)
                fname2=str(fname)
                print fname
                return fname2
 
        #creer une instance de OrganiseCSV et lance la transformation
        def process(fname2):
                convert=OrganiseCSV(fname2)
                convert.transform()
 
 
 
 
 
def main():
    root = Tk()
    k = mywidgets(root)
    root.title('PyCSV Converter')
    root.mainloop()
main()
Merci d avance