我想知道如何在Python中读取字符到缓冲区中?在C代码中,我可以很容易地声明缓冲区字符,如char buffer[256];
:
void read_char(int x, char buffer[], int *flag_stop) {
int i, length;
char character;
i = 0;
bzero(buffer, 256);
do {
if ((length = read(x, &character, 1)) <= 0)
{
*flag_stop = 1;
break;
}
buffer[i] = character;
i++;
}
while(c != 0x0A);
}
但是我不知道在Python中怎么做所以代码是这样的:
def read_char(x,buffer,**flag_stop):
i = 0
buffer = np.array([], dtype='S64')
while True:
if os.read(x, character, 1) <= 0:
**flag_stop == 1
break
buffer[i] = str(character)
i=i+1
if(character != 0x0A):
break
我试过numpy。但我没有工作。对这个问题有什么想法吗?非常感谢!
您的主要问题是您希望在Python中编写与c完全相同的代码。
Python需要这样的东西
def read_char(x):
flag_stop = False # or 0
i = 0
buffer = np.array([], dtype='S64')
while True:
character = os.read(x, 1)
if not character: # if len(character) < 0
flag_stop = True # or 1
break
buffer[i] = character
i += 1
if character != 0x0A:
break
return buffer, flag_stop
# ---
buffer, flag_stop = read_char(file_handler)
我不喜欢你的代码中的str()
-你可能会得到单字节,这是多字节代码的一部分(如utf-8
),转换成str()
只会弄乱它。