script.py 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import csv
  2. import sys
  3. # Fonction pour ouvrir et lire le fichier
  4. def lire_fichier(nom_fichier):
  5. try:
  6. # Ouvre le fichier en mode lecture
  7. with open(nom_fichier, 'r') as fichier:
  8. # Lit toutes les lignes du fichier
  9. lignes = fichier.readlines()
  10. return lignes
  11. except FileNotFoundError:
  12. print(f"Le fichier {nom_fichier} n'a pas été trouvé.")
  13. return None
  14. # Fonction pour extraire la colonne "Partkeepr" et ajouter "storageLocation"
  15. def extraire_colonne_partkeepr(lignes, nom_fichier_csv):
  16. # Recherche de l'index de la colonne "Partkeepr"
  17. entetes = lignes[0].strip().split('\t')
  18. try:
  19. indice_partkeepr = entetes.index('Partkeepr')
  20. except ValueError:
  21. print("La colonne 'Partkeepr' n'a pas été trouvée dans le fichier.")
  22. return None
  23. # Ajout de l'index pour la colonne "storageLocation"
  24. entetes.append('storageLocation')
  25. # Extrayez les valeurs de la colonne "Partkeepr"
  26. valeurs_partkeepr = []
  27. for ligne in lignes[1:]:
  28. colonnes = ligne.strip().split('\t')
  29. # Vérifier si la ligne n'est pas vide et contient suffisamment de colonnes
  30. if colonnes and len(colonnes) > indice_partkeepr:
  31. partkeepr = colonnes[indice_partkeepr]
  32. # Rechercher dans le fichier CSV
  33. resultat_csv = rechercher_dans_csv(partkeepr, nom_fichier_csv)
  34. # Ajouter la storageLocation à la ligne
  35. colonnes.append(resultat_csv[1] if resultat_csv else '')
  36. valeurs_partkeepr.append([partkeepr, resultat_csv[1] if resultat_csv else ''])
  37. return entetes, valeurs_partkeepr
  38. # Fonction pour écrire dans le fichier texte
  39. def ecrire_dans_fichier_txt(entetes, valeurs, nom_fichier_entree):
  40. # Générer le nom du fichier de sortie
  41. nom_fichier_sortie = f"{nom_fichier_entree.split('.')[0]}_Localisation.txt"
  42. try:
  43. # Ouvre le fichier en mode écriture
  44. with open(nom_fichier_sortie, 'w') as fichier:
  45. # Écrit les entêtes
  46. fichier.write('\t'.join(['Partkeepr', 'storageLocation']) + '\n')
  47. # Écrit les valeurs
  48. for ligne in valeurs:
  49. fichier.write('\t'.join(map(str, ligne)) + '\n')
  50. print(f"Les données ont été ajoutées à {nom_fichier_sortie}.")
  51. except IOError:
  52. print(f"Erreur lors de l'écriture dans le fichier {nom_fichier_sortie}.")
  53. # Fonction pour rechercher dans le fichier CSV
  54. def rechercher_dans_csv(partkeepr, nom_fichier_csv):
  55. try:
  56. with open(nom_fichier_csv, 'r') as csv_file:
  57. csv_reader = csv.reader(csv_file)
  58. for row in csv_reader:
  59. if row[0] == partkeepr:
  60. return row
  61. print(f"Le Partkeepr {partkeepr} n'a pas été trouvé dans le fichier CSV.")
  62. return None
  63. except FileNotFoundError:
  64. print(f"Le fichier {nom_fichier_csv} n'a pas été trouvé.")
  65. return None
  66. # Programme principal
  67. if len(sys.argv) != 2:
  68. print("Usage: python script.py fichier.txt")
  69. sys.exit(1)
  70. nom_fichier_txt = sys.argv[1]
  71. nom_fichier_csv = 'export.csv' # Vous pouvez modifier cela selon vos besoins
  72. lignes_fichier = lire_fichier(nom_fichier_txt)
  73. if lignes_fichier is not None:
  74. entetes, valeurs_partkeepr = extraire_colonne_partkeepr(lignes_fichier, nom_fichier_csv)
  75. if valeurs_partkeepr is not None:
  76. # Écrire dans le fichier texte de sortie
  77. ecrire_dans_fichier_txt(entetes, valeurs_partkeepr, nom_fichier_txt)