So im running into a problem, I want to make this code run every 10 seconds for example. For some reason python doesn't recognise the value "text" when inserted in a function.
import os
import docx2txt
import re
import pandas as pd
import numpy as np
import openpyxl
import time
import schedule
#variables
path = r"C:\Users\eschbachm\OneDrive - EXP\Desktop\test"
os.chdir(path)
#Colonne total
col1 = []
col2 = []
col3 = []
col4 = []
col5 = []
col6 = []
col7 = []
col8 = []
col9 = []
col10 = []
col11 = []
col12 = []
#lists
vet = ""
#Sends vet list to string
for j in vet:
vet += j + ", "
def ma(vet):
#Colonne 1
result = re.search('Transport, (.*)Contact', vet)
result_1 = (result.group(1)).replace(",", "")
Tra = result_1
col1.append(Tra)
#Colonne 2
VQ = ''
col2.append(VQ)
#Colonne 3
result = re.search('(.*)LOCATION', vet)
result_3 = (result.group(1)).replace(",", "")
FT = result_3
col3.append(FT)
#Colonne 4
result = re.search('Date, (.*)Numéro', vet)
result_4 = (result.group(1)).replace(",", "")
Date = result_4
col4.append(Date)
#Colonne 5
result = re.search('Prix, (.*)Modèle', vet)
result_5 = (result.group(1)).replace(",", "")
Prix = result_5
col5.append(Prix)
#Colonne 6
result = re.search('Compte, (.*)Accessoires', vet) #recherche valeur de GL
result_6 = (result.group(1)).replace(",", "")
GL = result_6
#Colonne 7
result = re.search('DBS, (.*)Transport', vet) #recherche valeur de PO
result_7 = (result.group(1)).replace(",", "")
PO = result_7
a = 0
b = 0
c = 0
for line in text:
# checking string is present in line or not
if GL != "" and PO != "": #si Gl et PO sont present en meme temps
a = 1
elif GL != "": #si Gl est present et non PO
b = 2
elif PO != "": #si PO est present et non GL
c = 3
break
if a == 0:
pass
else: #si Gl et PO sont present en meme temps
col6.append(GL)
col7.append(PO)
if b == 0:
pass
else: #si Gl est present et non PO
col6.append(GL)
col7.append('')
if c == 0:
pass
else: #si PO est present et non GL
col6.append('')
col7.append(PO)
if a == 0 and b == 0 and c == 0:
col6.append('')
col7.append('')
#Colonne 8
IMACS = ''
col8.append(IMACS)
#Colonne 9
Notes = ''
col9.append(Notes)
#Colonne 10
result = re.search('par, (.*)De', vet) #recherche valeur de DP
result_10 = (result.group(1)).replace(",", "")
DP = result_10
col10.append(DP)
#Colonne 11
result = re.search('De, (.*)À', vet) #recherche valeur de origine
result_11 = (result.group(1)).replace(",", "")
ORI = result_11
col11.append(ORI)
#Colonne 12
result = re.search('À, (.*)Prix', vet) #recherche valeur de destination
result_12 = (result.group(1)).replace(",", "")
DEST = result_12
col12.append(DEST)
def run():
for f in os.listdir(path):
if f.endswith('.docx'):
text = docx2txt.process(f).replace(":", " ").replace(",", " ").replace("_", " ")
ma(", ".join(text.split()))
print('Transfert de donnée Réussi!')
# Creating the first Dataframe using dictionary
data1 = {
"Transporteur": col1,
"#Fournisseur": col2,
"FT#": col3,
"Date ceuillette": col4,
"Prix": col5,
"GL": col6,
"PO#": col7,
"IMACS/CC/W/O": col8,
"Notes si requis": col9,
"Transport demandé par": col10,
"Origine": col11,
"Destination": col12}
df1 = pd.DataFrame(data=data1)
df1 = df1.sort_values('Date ceuillette', ascending=True)
# load df to existing excel
with pd.ExcelWriter('output.xlsx', mode='a', if_sheet_exists="replace") as writer:
df1.to_excel(writer, sheet_name='Sheet_name1')
schedule.every(10).seconds.do(run)
while 1:
schedule.run_pending()
time.sleep(2)
Python gives me this error:
Traceback (most recent call last):
File "C:\Users\eschbachm\OneDrive - EXP\Desktop\code\CAT - Version Finale.py", line 149, in <module>
run()
File "C:\Users\eschbachm\OneDrive - EXP\Desktop\code\CAT - Version Finale.py", line 123, in run
ma(", ".join(text.split()))
File "C:\Users\eschbachm\OneDrive - EXP\Desktop\code\CAT - Version Finale.py", line 69, in ma
for line in text:
NameError: name 'text' is not defined. Did you mean: 'next'?