Python 读取字符
Python read character
我想知道如何将字符读入 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 但我没有用。对这个问题有什么想法吗?非常感谢!
您的主要问题是您希望在 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()
只能搞砸了。
我想知道如何将字符读入 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 但我没有用。对这个问题有什么想法吗?非常感谢!
您的主要问题是您希望在 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()
只能搞砸了。