我对 Python 中的字符串感到困惑,
考虑这段代码,
fo = open("test.txt", "wb")
fo.write(bytes('Sufiyan','UTF-8'))
如果我要运行这段代码,它会给出这个错误,
Traceback (most recent call last): File "C:\Users\Sufiyan\Desktop\AES\a.py", line 2, in <module> fo.write('Sufiyan') TypeError: 'str' does not support the buffer interface
因此,我必须将其转换为bytes
并提供编码类型。
fo = open("test.txt", "wb")
fo.write(bytes('Sufiyan','UTF-8'))
这是可行的,因为如果您使用 Python3x,那么 string 与 Python 2.x 的类型不同,您必须将其转换为字节(对其进行编码)。
现在,当我使用此代码写入文件时,
def BB_cf(file, *args, **kwargs): #Create files
try:
fo = open(file)
fo.close()
except IOError:
print (file, 'not Found')
print ("Creating file.....")
fo = open(file, "w")
print (file,"Created Successfully!")
if file == 'input_Data.txt':
print(file,"is Empty..\nWriting Data..")
text = kwargs.get('text', None)
fo.write(text)
print("'"+text+"'", "is written in",file)
fo.close()
fo.close()
.
BB_cf('input_Data.txt', text='Sufiyan Ghori')
正如您在最后第 4 行中看到的那样fo.write(text)
,我没有对其进行编码,但代码仍在工作。
为什么代码在没有编码的情况下工作?
现在,如果我将其转换为bytes
,它将给出以下错误,
回溯(最近一次通话最后):
文件“C:\Users\Sufiyan\Desktop\AES\BlackBox.py”,第 47 行,在
BB_cf('input_Data.txt', text='Sufiyan Ghori') File
“C:\Users\Sufiyan\Desktop\AES\BlackBox.py”,第 41 行,在 BB_cf
fo.write(bytes(text,'UTF-8')) TypeError: must be str, not bytes
上述两个代码都使用 Python3x 运行,第一个代码希望我将其编码string
为Bytes
,而第二个代码在没有编码的情况下运行。