簡體   English   中英

TypeError:預期的字節,字節數組或緩沖區兼容對象

[英]TypeError: expected bytes, bytearray or buffer compatible object

我正在嘗試將Python2腳本(運行良好)移植到Python3,但是我遇到了問題。

這是我的代碼:

def encode_script(duck_text, duck_lang, bunny=None):

    lang_dir = os.path.join(os.path.dirname(__file__), 'languages')
    language_dict = os.path.join(lang_dir, '{0}.json'.format(duck_lang))
    lang_file = json.load(open(language_dict))
    encoded_file = parse_text(duck_text, lang_file, bunny)

    if encoded_file and not bunny:
        if 'Not in Language' in encoded_file:
            return encoded_file
        else:
            try:
                encoded_file = "".join(encoded_file)
                duck_blob = io.StringIO()

                duck_blob.write(encoded_file.decode('hex'))

                duck_bin = duck_blob.getvalue()
                duck_blob.close()
                return duck_bin

            except Exception as e:
                print ("Error creating inject.bin: {0}".format(e))
                return False

這是錯誤:

D:\encdec\Encoders-decoders\DuckToolkit-master>python ducktools.py -e -l us test.txt ducky.bin
[+] Reading Input file.
  [-] Encoding File
Traceback (most recent call last):
  File "ducktools.py", line 58, in <module>
    duck_bin = encoder.encode_script(duck_text, language)
  File "D:\encdec\Encoders-decoders\DuckToolkit-master\ducktoolkit\encoder.py", line 160, in encode_script
    encoded_file = parse_text(duck_text, lang_file, bunny).decode()
  File "D:\encdec\Encoders-decoders\DuckToolkit-master\ducktoolkit\encoder.py", line 24, in parse_text
    duck_text = duck_text.replace("\r", "")
TypeError: expected bytes, bytearray or buffer compatible object

該腳本可在Python2上完美運行。 我該怎么辦?

我知道這有點晚了,但是當將帶有.replace()的語句從python2轉換為python3時,我遇到了同樣的問題,並且能夠通過在.replace()中的參數之前加上'b'來修復它,因此請嘗試更改:

duck_text = duck_text.replace("\r", "")

至:

duck_text = duck_text.replace(b"\r", b"")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM