2017-10-10 5 views
1

J'ai une question concernant Python (3.6) et ftplib. J'ai réinstallé Windows (10), et l'un de mes anciens scripts ne fonctionne pas. ligne est problématique:Python 3.6 ftplib Erreur STOR

conn.storlines ('STOR runes.txt', ouvert ('D: \ runes.txt', 'r'))

Erreur Je continue à recevoir est:

Traceback (most recent call last): 
    File "C:\Users\ch1zra\Saved Games\Diablo II\linereader.py", line 108, in <module> 
    conn.storlines('STOR runes.txt', open('D:\\runes.txt','r')) 
    File "C:\Python\lib\ftplib.py", line 536, in storlines 
    if buf[-1] in B_CRLF: buf = buf[:-1] 
TypeError: a bytes-like object is required, not 'str' 

Le fichier existe. Cela fonctionnait avant, mais je courais l'ancienne version de Python (2.7 IIRC).

L'aide est très appréciée, merci d'avance.

Répondre

2

L'exception TypeError indique qu'un objet de type octet est requis. Ouvrez le fichier avec le mode binaire.

changement

conn.storlines('STOR runes.txt', open('D:\\runes.txt','r')) 

Pour:

conn.storlines('STOR runes.txt', open('D:\\runes.txt','rb')) 
+0

Il a travaillé actualy, mais ne doivent pas txt être ouverts avec le mode 'r'? Merci :) – ch1zra

+0

Oui, ça devrait. Il est encore lisible, juste converti en binaire. De la page doc 'Ainsi, lors de l'ouverture d'un fichier binaire, vous devez ajouter 'b' à la valeur du mode pour ouvrir le fichier en mode binaire, ce qui améliorera la portabilité. (L'ajout de 'b' est utile même sur les systèmes qui ne traitent pas différemment les fichiers binaires et les fichiers texte, où il sert de documentation.) ' – Jajo