--Détection d'erreur Python exécutée à partir de Powershell
except UnicodeDecodeError
pour détecter une erreur de deode dans une fonction python
--Recevoir l'erreur ci-dessus dans Powershell--Code qui appelle la fonction de conversion d'onglets
exeConvertCsvtoTsv.py
from defConvert import CsvToTsv
import sys
#Chemin du fichier cible
path = sys.argv[1]
#Convertir CSV en TSV
CsvToTsv(path)
--Fonction de conversion de tabulation
convertTav.py
import csv
import sys
def CsvToTsv(path):
#Tableau pour la lecture
line = []
try:
#Lire ⇒ Le codage du csv à lire est utf-8 donc une erreur se produit ici
with open(path, "r", newline="", encoding="cp932") as f:
#Créer un objet de lecture (séparé par des virgules)
reader = csv.reader(f, delimiter = ",")
#Lis
line = [row for row in reader]
#l'écriture
with open(path, "w", newline="", encoding="utf_8") as f:
#Création d'objets d'écriture (délimités par des tabulations)
writer = csv.writer(f, delimiter = "\t")
#Écrivez tout ensemble
writer.writerows(line)
#erreur de décodage
except UnicodeDecodeError as err:
print(err)
sys.exit()
finally:
#close
f.close
--Code PowerShell qui exécute des fonctions python
main.ps1
#CSV à lire
$csv = "test.csv"
try{
#Confirmation de fichier
if((Test-Path $out) -eq $false){
$ret = "No File"
Throw $ret
}
#Convertir de CSV en TSV
$ret = $null
$ret = python exeConvertCsvtoTsv.py $out #$Recevez le résultat de l'exécution côté python avec ret
if($null -ne $ret){
Throw $ret
}
}
catch{
Write-Host "SQL Execution Error`r`n$ret"
}
finally{
Write-Host "end"
}
résultat
#erreur de décodage
SQL Execution Error
'cp932' codec can't decode byte 0x85 in position 7: illegal multibyte sequence
end
--Python est pratique car les types d'exception sont préparés pour chaque type d'exception.
sauf le type d'exception comme alias:
--S'il s'agit d'une erreur de décodage, ```UnicodeDecodeError``` --0 Si une erreur de division, `` `` ZeroDivisionError
--Si vous ne faites rien lorsqu'une exception se produit, vous pouvez passer avec `` pass```Recommended Posts