проблемный старый python скрипт - PullRequest
0 голосов
/ 25 марта 2020

всем привет. У меня проблема со скриптом python 2.X, который я хотел бы запустить в 3X. Вот сообщение об ошибке, вы можете помочь мне

outfile.write(fixed.encode,"(utf-8)")

TypeError: write () принимает ровно один аргумент (дано 2)

Редактировать:

#Write the converted program in this folder:
print ("\n--Converted to TI-Basic code:--")
print (fixed)
print ("")
print ("Making output files: "+outname+".tib, "+outname+".8xp ...")

outfile=open(outname+".tib","w")
outfile.write(fixed.encode("utf-8"))
outfile.close()

код и новое сообщение об ошибке: строка 68, в основном файле outfile.write (fixed.encode ("utf-8") )) TypeError: аргумент write () должен быть str, а не байтами

Ответы [ 3 ]

0 голосов
/ 25 марта 2020

Кажется, что в outfile.write(fixed.encode,"(utf-8)") отсутствуют скобки, код выглядит беспорядочным.

Ваш код может быть очищен в нескольких областях, сейчас я сделал несколько быстрых настроек.

#Write the converted program in this folder:
print("\n--Converted to TI-Basic code:--")
print(fixed, end="\n\n")
print(f"Making output files: {out_name}.tib, {out_name}.8xp ...")

with open(f"{out_name}.tib", "w") as out_file:
    out_file.write(fixed)
0 голосов
/ 25 марта 2020

Ошибка «Аргумент TypeError: write () должен быть str, а не байтами» из-за того, что вы пытаетесь записать байтовые данные, но не указали, что открыли файл в байтовом режиме. Если вы хотите записать строку в файл, используйте оператор with

with open(outname+".tib","wb") as outfile:
    outfile.write(fixed.encode("utf-8"))

Если фиксированная переменная имеет тип str, тогда вы можете избежать encode('utf-8') из приведенного выше кода, тогда режим должен быть просто w

0 голосов
/ 25 марта 2020

Это, вероятно, было вызвано каким-то мошенническим автозаполнением IDE / Intellisense.

Это должно быть:

outfile.write(fixed.encode("utf-8"))

Итак, кавычки были переключены, не относящиеся к Python 2. х - 3.х конвертация вообще.

...