Comment lire les données de la fin du fichier source?

La seule façon d'y penser serait de rouvrir la source depuis le programme et de lire la source sous forme de texte. Il doit y avoir du code pour gérer les fichiers .pyc.

Existe-t-il un moyen plus simple et plus pythonique de procéder? Je suppose que cela pourrait impliquer un moyen de faire une référence directe dans un fichier source python, comme celui-ci (qui ne fonctionne pas).

test_data = gettestdata()
for d in data:
    # do all kinds of stuff in may lines of code

def gettestdata():
    return \
        (many lines of data)
0
WesR 15 mars 2019 à 01:56

2 réponses

Meilleure réponse

En supposant que tout devrait être à l'intérieur des fonctions / classes, la fonction principale n'existe donc que pour l'analyse des paramètres, le lancement des enregistreurs et d'autres éléments non fonctionnels.

Code

#!/usr/bin/python3
# -*- coding: utf-8 -*-


def run(input_data):
    return input_data


if __name__ == '__main__':

    # initiate loggers
    # make other things

    data = "qqqqqqqqqq" \
           "wwwwwwwwwww" \
           "eeeeeeeeeee"

    result = run(data)

    print(result)

Sortie

qqqqqqqqqq wwwwwwwwww eeeeeeeeeee

C'est ce que tu veux? Sinon, désolé, je ne connais pas d'autres moyens «pythoniques».

1
Dmitrii 14 mars 2019 à 23:36

Vous avez une ou plusieurs chaînes "grandes" à récupérer, telles que des instructions SQL CREATE TABLE. Enterrez chacun dans un getter, en utilisant la syntaxe des guillemets triples. Par exemple:

def get_create_foo():
    return """
create table foo (
  id integer primary key,
  ...
);
    """

Puis un appel comme

    session.execute(get_create_foo())

Est une belle monocouche compacte.

Pour les données de test, vous souhaiterez peut-être .split() ou autrement masser vos données afin qu'elles soient faciles à parcourir. Pour les données de test volumineuses, elles appartiennent probablement à un fichier séparé, tel qu'un fichier CSV. Pensez à le tirer avec .from_csv(), ce qui est assez pratique.

N'oubliez pas que __file__ peut vous dire où s'exécute votre script. (Il existe des cas extrêmes, par exemple lorsque le script est dans un fichier .zip sur votre $PYTHONPATH.) Voici un idiome standard pour trouver un CSV dans le même dossier que votre code source :

from pathlib import Path
import os

folder = Path(os.path.abspath(os.path.dirname(__file__)))
with open(folder / 'foo.csv') as file_in:
    ...
0
J_H 15 mars 2019 à 00:23