--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