Совместимость хинтинга типа Python

Так как я не привык к прямо сейчас, я предлагаю более простое решение. Предположим, что ваш CSV-файл имеет 100 строк с 10 номерами в каждой строке, разделенных символом ','. Вы можете загрузить эти данные в виде массива со следующим кодом:

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
using namespace std;

int main()
{
    int A[100][10];
    ifstream ifs;
    ifs.open("name_of_file.csv");
    string s1;
    char c;
    for(int k=0; k<100; k++)
    {
        getline(ifs,s1);
        stringstream stream(s1);
        int j=0;
        while(1)
        {
            stream >>A[k][j];
            stream >> c;
            j++;
            if(!stream) {break;}
        }
    }


}
1
задан Peiti Li 19 February 2019 в 22:28
поделиться

2 ответа

Я думал, что вы можете сделать скрипт, используя этот код

import sys
import ast

class visitor(ast.NodeVisitor):

    def visit_Try(self, node):
        ...

    if sys.version.startswith("2"):
        visit_TryFinally = visit_TryFinally
    elif sys.version.startswith("3"):
        visit_TryFinally = visit_Try

sys.version.startswith() для проверки версии Python.

0
ответ дан Adam Smith 19 February 2019 в 22:28
поделиться

Mypy знает , как обрабатывать проверки версий Python , и вы можете использовать условные псевдонимы типа , чтобы выбрать правильный тип для правильной версии Python:

if sys.version_info[0] >= 3:
    TryNode = ast.Try
else:
    TryNode = ast.TryFinally

class Visitor(ast.NodeVisitor):


    def visit_Try(self, node):  # type: (TryNode) -> None
        # ...
    visit_TryFinally = visit_Try  # python 2 compatible
[1116 ] Вы можете дополнительно сэкономить на времени выполнения тестов if sys.version_info, поместив этот код в тест if TYPE_CHECKING: .

В качестве примечания: если вы обрабатываете ast.Try в Python 3 для отслеживания компонентов finally: и except ...: оператора try, вы хотите обрабатывать как ast.TryFinally, так и ast.TryExcept в Python. 2, как и в Python 2.5, вы можете использовать только try...finally или try...except в одном выражении.

0
ответ дан Martijn Pieters 19 February 2019 в 22:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: