2017-10-10 13 views
1

私はPython(3.6)とftplibに関する質問があります。 私はWindows(10)を再インストールしました。私の古いスクリプトの1つが動作していません。問題のある行は、次のとおりです。Python 3.6 ftplib STORエラー

conn.storlines( 'STORのrunes.txt'、オープン( 'D:\ runes.txt'、 'R'))私は入れません

エラーは次のとおりです。

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' 

ファイルが存在します。 これまではうまくいきましたが、古いバージョンのPython(2.7 IIRC)を実行していました。

ご協力いただきありがとうございます。ありがとうございます。

答えて

2

TypeError例外は、オブジェクトのようなバイトが必要であることを示します。バイナリモードでファイルを開きます。

変更するには

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

それはactualy働い
conn.storlines('STOR runes.txt', open('D:\\runes.txt','rb')) 
+0

が、TXTファイルは 'R' モードで開くことはないでしょうか? ありがとうございました:) – ch1zra

+0

はい、そうすべきです。それはまだ読めるだけで、それをバイナリに変換しただけです。ドキュメントページ 'したがって、バイナリファイルを開くときには、バイナリモードでファイルを開くためにモード値に 'b'を追加する必要があり、移植性が向上します。 ( 'b'を付けることは、バイナリファイルとテキストファイルを別々に扱っていないシステムでも役に立ちます。 – Jajo