Python:C++ - 就像流输入一样

Art*_*owy 2 c++ python input stream

是否有一种pythonic方式的阅读 - 比如说 - 混合整数和字符输入而不是一次读取整个输入而不用担心换行?例如,我有一个文件,其中包含空格分隔的数据,我只知道有x个整数,然后是y个字符,然后是更多的整数.我不想假设有关换行的任何内容.

我的意思是像C++中的以下内容一样无意识:

...

int i, buf;
char cbuf;
vector<int> X, Z;
vector<int> Y;

for (i = 0; i < x; i++) {
    cin >> buf;
    X.push_back(buf);
}

for (i = 0; i < y; i++) {
    cin >> cbuf;
    Y.push_back(cbuf);
}

for (i = 0; i < z; i++) {
    cin >> buf;
    Z.push_back(buf);
}
Run Code Online (Sandbox Code Playgroud)

编辑:我忘了说我希望它在控制台的实时输入下表现良好 - 即在获取令牌之前不需要按ctrl + d并且该功能应该能够尽快返回它们行已输入.:)

小智 6

如何返回一个令牌流的小型生成器函数,其行为如下cin:

def read_tokens(f):
   for line in f:
       for token in line.split():
           yield token

x = y = z = 5  # for simplicity: 5 ints, 5 char tokens, 5 ints
f = open('data.txt', 'r')
tokens = read_tokens(f)
X = []
for i in xrange(x):
    X.append(int(tokens.next()))
Y = []
for i in xrange(y):
    Y.append(tokens.next())
Z = []
for i in xrange(z):
    Z.append(int(tokens.next()))
Run Code Online (Sandbox Code Playgroud)