Estoy intentando agregar algunas informaciones de todos los archivos de torrents en una ruta a una tabla de mi base de datos MySQL, pero parece que tengo algunos problemas de PATH. Como puede ver, está la ruta completa e incluso detecta el “charlie.torrent”, por lo que realmente no entiendo cuál es el problema.
Este es mi código:
#!/usr/bin/env python # -*- coding: utf-8 -*- import mysql.connector import bencode import binascii import hashlib import os import sys conn = mysql.connector.connect(host="localhost",user="root",password="root", database="TORRENTS") cursor = conn.cursor path = "/home/florian/TorrentFiles" dirs = os.listdir(path) for file in dirs: try: with open(file, 'rb') as torrentfile: torrent = bencode.bdecode(torrentfile.read()) user = ("torrent['info']['name']","torrent['info']['length'],'bytes'","(hashlib.sha1(bencode.bencode(torrent['info'])).hexdigest())") cursor.execute("""INSERT INTO torrent_infos (Name, Size, Hash) VALUES(%s, %s, %s)""", user) except bencode.BTL.BTFailure: continue conn.close()
Y realmente no entiendo el siguiente resultado de mi script:
root@debian:/home/florian/Documents/mysite/polls# python bdd.py Traceback (most recent call last): File "bdd.py", line 17, in with open(file, 'rb') as torrentfile: IOError: [Errno 2] No such file or directory: 'charlie.torrent'
Ya he echado un vistazo a los mismos temas sin ningún resultado.
Está intentando abrir un archivo ubicado en la path
, pero sin incluir esa ruta, que intenta abrir el archivo en la ruta de trabajo actual de su script de Python. Por ejemplo, si ejecuta el script desde /home/user/script.py
, mientras que sus torrents están en /home/user/torrents
. Cuando open(file, 'rb')
está haciendo /home/user/charlie.torrent
en lugar de /home/user/torrents/charlie.torrent
. Intente reemplazarlo with open(file, 'rb')
con with open(os.path.join(path, file), 'rb')
.
También puede cambiar el directorio en el que se encuentra actualmente a la ruta.
... dirs = os.listdir(path) os.chdir(path) for file in dirs: ...
Eso debería funcionar también.