una txt otro modulos lista linea leer importar funciones especifica como clases archivos archivo python python-import

txt - ¿Cómo importar otros archivos de Python?



leer una linea especifica de un archivo en python (13)

Hay muchas formas de importar un archivo de python, todas con sus pros y sus contras.

No solo elija rápidamente la primera estrategia de importación que funcione para usted, sino tendrá que volver a escribir el código base más adelante cuando descubra que no satisface sus necesidades.

Comenzaré explicando el ejemplo más fácil # 1, luego avanzaré hacia el ejemplo # 7 más profesional y sólido.

Ejemplo 1, importar un módulo de python con intérprete de python:

  1. Ponga esto en /home/el/foo/fox.py:

    def what_does_the_fox_say(): print("vixens cry")

  2. Entrar en el intérprete de python:

    el@apollo:/home/el/foo$ python Python 2.7.3 (default, Sep 26 2013, 20:03:06) >>> import fox >>> fox.what_does_the_fox_say() vixens cry >>>

    Importó fox a través del intérprete de python, invocó la función de python what_does_the_fox_say() desde fox.py.

Ejemplo 2, use execfile o ( exec en Python 3 ) en un script para ejecutar el otro archivo de Python en su lugar:

  1. Ponga esto en /home/el/foo2/mylib.py:

    def moobar(): print("hi")

  2. Ponga esto en /home/el/foo2/main.py:

    execfile("/home/el/foo2/mylib.py") moobar()

  3. ejecuta el archivo:

    el@apollo:/home/el/foo$ python main.py hi

    La función moobar se importó de mylib.py y se puso a disposición en main.py

Ejemplo 3, Usar desde ... importar ... funcionalidad:

  1. Ponga esto en /home/el/foo3/chekov.py:

    def question(): print "where are the nuclear wessels?"

  2. Ponga esto en /home/el/foo3/main.py:

    from chekov import question question()

  3. Ejecutalo de esta manera:

    el@apollo:/home/el/foo3$ python main.py where are the nuclear wessels?

    Si define otras funciones en chekov.py, no estarán disponibles a menos que import *

Ejemplo 4, Importar riaa.py si está en una ubicación de archivo diferente de donde se importa

  1. Coloca esto en /home/el/foo4/stuff/riaa.py:

    def watchout(): print "computers are transforming into a noose and a yoke for humans"

  2. Ponga esto en /home/el/foo4/main.py:

    import sys import os sys.path.append(os.path.abspath("/home/el/foo4/stuff")) from riaa import * watchout()

  3. Ejecutarlo:

    el@apollo:/home/el/foo4$ python main.py computers are transforming into a noose and a yoke for humans

    Eso importa todo en el archivo extranjero desde un directorio diferente.

Ejemplo 5, use os.system("python yourfile.py")

import os os.system("python yourfile.py")

En el ejemplo 6, importe su archivo mediante piggybacking el inicio de python:

Consulte: https://docs.python.org/3/library/user.html

Coloque este código en su directorio de inicio en ~/.pythonrc.py

class secretclass: def secretmessage(cls, myarg): return myarg + " is if.. up in the sky, the sky" secretmessage = classmethod( secretmessage ) def skycake(cls): return "cookie and sky pie people can''t go up and " skycake = classmethod( skycake )

Ponga este código en su main.py (puede estar en cualquier lugar):

import user msg = "The only way skycake tates good" msg = user.secretclass.secretmessage(msg) msg += user.secretclass.skycake() print(msg + " have the sky pie! SKYCAKE!")

Ejecutarlo:

$ python main.py The only way skycake tates good is if.. up in the sky, the skycookie and sky pie people can''t go up and have the sky pie! SKYCAKE!

El crédito para esta jist va a: https://github.com/docwhat/homedir-examples/blob/master/python-commandline/.pythonrc.py Envíe sus botes de carga.

Ejemplo 7, el más robusto: importa archivos en python con el comando de importación simple:

  1. Hacer un nuevo directorio /home/el/foo5/
  2. Crear un nuevo directorio /home/el/foo5/herp
  3. Haga un archivo vacío llamado __init__.py bajo herp:

    el@apollo:/home/el/foo5/herp$ touch __init__.py el@apollo:/home/el/foo5/herp$ ls __init__.py

  4. Crear un nuevo directorio / home / el / foo5 / herp / derp

  5. Bajo derp, haga otro archivo __init__.py :

    el@apollo:/home/el/foo5/herp/derp$ touch __init__.py el@apollo:/home/el/foo5/herp/derp$ ls __init__.py

  6. Debajo de / home / el / foo5 / herp / derp yolo.py un nuevo archivo llamado yolo.py Ponga esto ahí:

    def skycake(): print "SkyCake evolves to stay just beyond the cognitive reach of " + "the bulk of men. SKYCAKE!!"

  7. El momento de la verdad, /home/el/foo5/main.py el nuevo archivo /home/el/foo5/main.py , pon esto ahí;

    from herp.derp.yolo import skycake skycake()

  8. Ejecutarlo:

    el@apollo:/home/el/foo5$ python main.py SkyCake evolves to stay just beyond the cognitive reach of the bulk of men. SKYCAKE!!

    El archivo vacío __init__.py comunica al intérprete de python de que el desarrollador pretende que este directorio sea un paquete importante.

Si desea ver mi publicación sobre cómo incluir TODOS los archivos .py en un directorio, consulte aquí: https://stackoverflow.com/a/20753073/445131

Bono protip

ya sea que esté usando Mac, Linux o Windows, debe usar el editor inactivo de python como se describe aquí. Se desbloqueará su mundo python. http://www.youtube.com/watch?v=DkW5CSZ_VII

¿Cómo importo otros archivos en Python?

  1. ¿Cómo puedo importar exactamente un archivo python específico como import file.py ?
  2. ¿Cómo puedo importar una carpeta en lugar de un archivo específico?
  3. Quiero cargar un archivo de Python dinámicamente en tiempo de ejecución, basado en la entrada del usuario.
  4. Quiero saber cómo cargar solo una parte específica del archivo.

Por ejemplo, en main.py tengo:

from extra import *

Aunque esto me da todas las definiciones en extra.py , cuando tal vez lo único que quiero es una sola definición:

def gap(): print print

¿Qué agrego a la declaración de import para obtener un gap de extra.py ?


Esto puede parecer una locura pero solo puede crear un enlace simbólico al archivo que desea importar si solo está creando un script de envoltorio para él.


Hay muchas formas, como se indica arriba, pero me parece que solo quiero importar el contenido de un archivo, y no quiero tener que escribir líneas y líneas y tener que importar otros módulos. Por lo tanto, se me ocurrió una forma de obtener el contenido de un archivo, incluso con la sintaxis de puntos ( file.property ) en lugar de fusionar el archivo importado con el suyo.
En primer lugar, aquí está mi archivo que importaré, data.py

testString= "A string literal to import and test with"


Nota: Podrías usar la extensión .txt lugar.
En mainfile.py , comience abriendo y obteniendo los contenidos.

#!usr/bin/env python3 Data=open(''data.txt'',''r+'').read()

Ahora tiene el contenido como una cadena, pero intentar acceder a data.testString causará un error, ya que los data son una instancia de la clase str , e incluso si tiene una propiedad testString , no hará lo que esperaba.
A continuación, crea una clase. Por ejemplo (juego de palabras destinado), ImportedFile

class ImportedFile:

Y poner esto en ella (con la sangría apropiada):

exec(data)


Y finalmente, reasignar data manera:

data=ImportedFile()

¡Y eso es! Simplemente acceda como lo haría para cualquier otro módulo, al escribir print(data.testString) se imprimirá en la consola A string literal to import and test with .
Sin embargo, si desea el equivalente de from mod import * solo descarte la clase, la asignación de instancia y anule la exec del exec .

Espero que esto ayude:)
-Benji


La mejor manera de importar archivos .py es a través de __init__.py . Lo más sencillo es crear un archivo vacío llamado __init__.py en el mismo directorio en el que se encuentra su archivo.py.

esta post de Mike Grouchy es una gran explicación de __init__.py y su uso para crear, importar y configurar paquetes de Python.


Lo que importa es importar el archivo y usar la abreviatura de su nombre.

import DoStuff.py as DS DS.main()

No olvide que su archivo de importación DEBE tener un nombre con la extensión .py


Me gustaría añadir esta nota, no muy claramente en otra parte; dentro de un módulo / paquete, al cargar desde archivos, el nombre del módulo / paquete debe tener el prefijo mymodule . Imagina que mymodule un diseño como este:

/main.py /mymodule /__init__.py /somefile.py /otherstuff.py

Al cargar somefile.py / otherstuff.py desde __init__.py el contenido debería verse así:

from mymodule.somefile import somefunc from mymodule.otherstuff import otherfunc


No tiene muchos métodos complejos para importar un archivo de python de una carpeta a otra. Simplemente cree un archivo __init__.py para declarar que esta carpeta es un paquete de Python y luego vaya a su archivo host donde desea importar, simplemente escriba

from root.parent.folder.file import variable, class, whatever


Para importar un archivo Python específico en ''runtime'' con un nombre conocido:

import os import sys

...

scriptpath = "../Test/MyModule.py" # Add the directory containing your module to the Python path (wants absolute paths) sys.path.append(os.path.abspath(scriptpath)) # Do the import import MyModule


Solo para importar el archivo python en otro archivo python

digamos que tengo el archivo python helper.py que tiene una función de visualización como,

def display(): print("I''m working sundar gsv")

Ahora en app.py , puedes usar la función de visualización,

import helper helper.display()

La salida,

I''m working sundar gsv

NOTA: No es necesario especificar la extensión .py.


También puede hacer esto: from filename import something

ejemplo: from client import Client Tenga en cuenta que no necesita la extensión .py .pyw .pyui .


Importar doc ..

Los archivos __init__.py son necesarios para hacer que Python trate los directorios como que contienen paquetes, esto se hace para evitar que los directorios con un nombre común, como una cadena, oculten involuntariamente módulos válidos que ocurren más adelante en la ruta de búsqueda del módulo.

__init__.py solo puede ser un archivo vacío, pero también puede ejecutar el código de inicialización del paquete o establecer la variable __all__ .

mydir/spam/__init__.py mydir/spam/module.py import spam.module or from spam import module


importlib es una adición reciente en Python para importar mediante programación un módulo. Es solo un envoltorio alrededor de __import__ Ver https://docs.python.org/3/library/importlib.html#module-importlib

import importlib moduleName = input(''Enter module name:'') importlib.import_module(moduleName)

Actualización: la respuesta a continuación está desactualizada . Utilice la alternativa más reciente arriba.

  1. Solo import file sin la extensión ''.py''.

  2. Puede marcar una carpeta como un paquete, agregando un archivo vacío llamado __init__.py .

  3. Puedes usar la función __import__ . Toma el nombre del módulo como una cadena. (De nuevo: nombre del módulo sin la extensión ''.py''.)

    pmName = input(''Enter module name:'') pm = __import__(pmName) print(dir(pm))

    Escriba help(__import__) para más detalles.


from file import function_name ######## Importing specific function function_name() ######## Calling function

y

import file ######## Importing whole package file.function1_name() ######## Calling function file.function2_name() ######## Calling function

Estas son las dos formas simples que he entendido hasta ahora y asegúrese de que su archivo "file.py" que desea importar como una biblioteca esté presente solo en su directorio actual.