【发布时间】:2021-12-12 12:24:12
【问题描述】:
我想知道如何在 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.chararray 但我没有工作。对这个问题有什么想法吗?非常感谢!
【问题讨论】:
-
flag_stop在您的函数中似乎没有做任何事情,它的预期用途是什么?此外,您声明的buffer数组的长度为 0 - 您可以使用numpy.zeros或numy.empty之类的东西来声明所需大小的数组(如果您想动态更改其列表,则列表会更好size)...您还用局部变量覆盖了函数buffer的参数... -
flag_stop 在我的主程序中使用,如果 flag_stop = 1 程序将停止。如您所说,我将尝试使用 numpy.zeros 和 numpy.empty 。谢谢
-
我不知道如何在 Python 中声明标志,所以我把 ** 放在 flag_stop 之前,对吗?
-
flag_stop 已在主编中删除。但是我对声明变量还有另一个问题,例如在 C prog 中,我可以在函数中执行
。但是,在 Python 中我不需要声明它。但是当我编译运行它时,出现了一个错误:NameError: global name 'character' is not defined。对不起,如果我提出了愚蠢的问题