IOError: No existe tal archivo o directorio

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.