Python 3.6中的ord()函数
正在尝试在Python3.6上打开Python2.7中的项目。我在那里遇到了Python 3.6中的ord()函数,python,python-2.7,Python,Python 2.7,正在尝试在Python3.6上打开Python2.7中的项目。我在那里遇到了ord()函数的问题 使用Python2.7处理ord()很好,我得到的输出图像文件具有相同的图片。我的意思是,我可以在图片中写入字节的信息 但是对于Python3.6,我试图不调用ord(),我得到的是一行记录信息,而不是像Python2.7那样,我的真实图片 from PIL import Image import sys textfile = open(sys.argv[1],'rb') textstring =
ord()
函数的问题
使用Python2.7处理ord()
很好,我得到的输出图像文件具有相同的图片。我的意思是,我可以在图片中写入字节的信息
但是对于Python3.6,我试图不调用ord()
,我得到的是一行记录信息,而不是像Python2.7那样,我的真实图片
from PIL import Image
import sys
textfile = open(sys.argv[1],'rb')
textstring = textfile.read()
textfile.close()
xval = 500
yval = int(len(textstring)/(xval*4) + 1)
im = Image.new('RGBA', (xval,yval), (0,0,0,0))
width = xval
height = yval
count = 0
for y in range (0,height):
for x in range (0,width):
if count == len(textstring) - 4:
im.putpixel((x,y),(ord(textstring[count]),ord(textstring[count + 1]),ord(textstring[count + 2]),ord(textstring[count + 3])))
break
if count == len(textstring) - 3:
im.putpixel((x,y),(ord(textstring[count]),ord(textstring[count + 1]),ord(textstring[count + 2]),0))
break
if count == len(textstring) - 2:
im.putpixel((x,y),(ord(textstring[count]),ord(textstring[count + 1]),0,0))
break
if count == len(textstring) - 1:
im.putpixel((x,y),(ord(textstring[count]),0,0,0))
break
im.putpixel((x,y),(ord(textstring[count]),ord(textstring[count + 1]),ord(textstring[count + 2]),ord(textstring[count + 3])))
count += 4
im.save(sys.argv[2])
在Python3中,我使用ord()
得到一个错误:
TypeError:ord()应为长度为1的字符串,但找到int
im.putpixel((x,y),(ord(文本字符串[count]),ord(文本字符串[count+1]),ord(文本字符串[count+2]),ord(文本字符串[count+3]))
我试图添加b
而不是ord()
,但没有成功
要运行程序,需要添加参数:python encryption.py inputfile image.png
你能给我一些建议吗,我该怎么修?谢谢。您有一个文本文件,但您以二进制模式显式打开它:
textfile = open(sys.argv[1],'rb')
使用
以文本模式阅读。在二进制模式下读取时,在Python 3中会得到字节
;字节的元素是0范围内的整数。。255,因此出现了错误。Python2太草率了,直到为时已晚,才有人注意到差异
textfile = open(sys.argv[1], 'r')