[PYTHON] Des PROS de Python pour m'aider sur mon script svp ???
19 messages
Mise à jour: il y a 6 mois
[BOT]GLanDUS
il y a 6 mois
Up
[BOT]GLanDUS
il y a 6 mois
Up
Chenzhen667
il y a 6 mois
Tu peux être plus précis sur l'erreur stp ?
[BOT]GLanDUS
il y a 6 mois
Tu peux être plus précis sur l'erreur stp ?
rarfile.RarCannotExec: Cannot find working tool
Chenzhen667
il y a 6 mois
Tu dois telecharger unrar si tu veux utiliser ces fonctions
citronzinzin
il y a 6 mois
Cette erreur indique que le module `rarfile` ne peut pas trouver un outil fonctionnel pour traiter les fichiers RAR. Le module `rarfile` dépend d'un outil externe pour manipuler les fichiers RAR, généralement `unrar` ou `rar`. Voici quelques étapes pour résoudre ce problème :
1. Installez l'outil UnRAR :
- Sur Windows, téléchargez et installez WinRAR depuis le site officiel (https://www.rarlab.com/).
- Sur Linux, vous pouvez installer unrar avec `sudo apt-get install unrar` (pour Debian/Ubuntu) ou l'équivalent pour votre distribution.
- Sur macOS, vous pouvez utiliser Homebrew : `brew install unrar`.
2. Assurez-vous que l'outil UnRAR est dans votre PATH système :
- Sur Windows, ajoutez le chemin d'installation de WinRAR (par exemple, `C:\Program Files\WinRAR`) à votre variable d'environnement PATH.
3. Spécifiez explicitement le chemin de l'outil UnRAR dans votre script. Vous pouvez ajouter ces lignes au début de votre script, juste après les imports :
```python
import rarfile
rarfile.UNRAR_TOOL = "chemin/vers/unrar.exe" # Sur Windows
# ou
rarfile.UNRAR_TOOL = "/usr/bin/unrar" # Sur Linux/macOS
```
Remplacez "chemin/vers/unrar.exe" par le chemin réel de l'exécutable unrar sur votre système.
4. Si vous utilisez Python 3.8 ou une version ultérieure sur Windows, vous pouvez essayer d'utiliser la bibliothèque `zipfile` intégrée pour gérer les fichiers RAR. Voici comment modifier votre fonction `check_password_protected` :
```python
import zipfile
def check_password_protected(file_path):
try:
with zipfile.ZipFile(file_path) as zf:
zf.testzip()
print(f"Le fichier {file_path} est ok")
return False
except RuntimeError as e:
if "encrypted" in str(e).lower():
return True
else:
print(f"Le fichier {file_path} est corrompu.")
except zipfile.BadZipFile:
print(f"Le fichier {file_path} est corrompu.")
return False
```
Cette approche ne nécessite pas d'outil externe, mais elle pourrait ne pas fonctionner pour tous les types de fichiers RAR.
Si ces solutions ne fonctionnent pas, vous pouvez envisager d'utiliser une autre bibliothèque comme `py7zr` qui gère plusieurs formats d'archive, y compris RAR, sans dépendre d'outils externes.
[BOT]GLanDUS
il y a 6 mois
Tu dois telecharger unrar si tu veux utiliser ces fonctions
J'ai un UnRar.exe dans le répertoire de WinRAR, je l'ai même ajouté aux variables d'environnement.
De plus comme je l'ai dit, si j'appelle la fonction simplement avec un chemin de fichier en paramètre ça fonctionne, c'est dans le script avec la boucle d'appel que ça merde
Romance_Dawn
il y a 6 mois
[BOT]GLanDUS a écrit :
ChatGPT m'a fait un script
Aller va bien te faire *****
Amaretsoncam
il y a 6 mois
Pourquoi tu n'essaye pas simplement d'ouvrir les .rar 1 par 1 pour voir s'il te demande un mdp ?
Romance_Dawn
il y a 6 mois
et demande chat gpt de te debug
Zinzolinux
il y a 6 mois
Fais un script bash avec unrar, ça sera plus simple
DstvskiSorrow
il y a 6 mois
Si t'as changé tes variables d'environnement, hésite pas à reboot ton éditeur, des fois ça refresh quand tu lances manuellement une fonction mais pas depuis le script
citronzinzin
il y a 6 mois
dans ta boucle tu peux print chaque file_path pour voir si c'est une archive en particulier qui pose problème
1deKarma
il y a 6 mois
Taré
Zinzolinux
il y a 6 mois
Un truc comme ça l'op :
for archive in $(ls *.rar); do
unrar vt -p- ${archive} > /dev/null 2>&1 &&
echo "${archive} : OK" ||
echo "${archive} : Encrypted"
done
[BOT]GLanDUS
il y a 6 mois
Pourquoi tu n'essaye pas simplement d'ouvrir les .rar 1 par 1 pour voir s'il te demande un mdp ?
Je dois tester tous mes rar de mon pc impossible à faire manuellement
[BOT]GLanDUS
il y a 6 mois
Fais un script bash avec unrar, ça sera plus simple
Merci je teste demain
[BOT]GLanDUS
il y a 6 mois