__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
<!DOCTYPE html>
<html lang="es" dir="ltr">
<head>
<base href="../../../../">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>De BASIC a Python</title>
<link rel="shortcut icon" href="media/navigation/favicon.ico">
<link type="text/css" href="normalize.css" rel="Stylesheet">
<link type="text/css" href="prism.css" rel="Stylesheet">
<link type="text/css" href="default.css" rel="Stylesheet">
<script type="text/javascript" src="polyfills.js"></script><script type="text/javascript" src="languages.js"></script><script type="text/javascript" src="es/langnames.js"></script><script type="text/javascript" src="flexsearch.debug.js"></script><script type="text/javascript" src="prism.js"></script><script type="text/javascript" src="help2.js" defer></script><script type="text/javascript" src="a11y-toggle.js" defer></script><script type="text/javascript" src="paginathing.js" defer></script><script type="text/javascript" src="es/bookmarks.js" defer></script><script type="text/javascript" src="es/contents.js" defer></script><script type="text/javascript" src="help.js" defer></script><meta name="viewport" content="width=device-width,initial-scale=1">
</head>
<body>
<header id="TopLeftHeader"><a class="symbol" href="es/text/shared/05/new_help.html"><div></div></a><a class="logo" href="es/text/shared/05/new_help.html"><p dir="auto">Ayuda de LibreOffice 25.2</p></a><div class="dropdowns"><div class="modules">
<button type="button" data-a11y-toggle="modules-nav" id="modules" aria-haspopup="true" aria-expanded="false" aria-controls="modules-nav">Módulo</button><nav id="modules-nav" hidden=""></nav>
</div></div></header><aside class="leftside"><input id="accordion-1" name="accordion-menu" type="checkbox"><label for="accordion-1" dir="auto">Contenido</label><div id="Contents" class="contents-treeview"></div></aside><div id="SearchFrame"><div id="Bookmarks">
<input id="search-bar" type="search" class="search" placeholder="Buscar en los marcadores del módulo elegido" dir="auto"><div class="nav-container" tabindex="0"><nav class="index" dir="auto"></nav></div>
</div></div>
<div id="DisplayArea" itemprop="softwareHelp" itemscope="true" itemtype="http://schema.org/SoftwareApplication">
<noscript><div id="WarnJS"><h1 dir="auto">Active JavaScript en el navegador para mostrar las páginas de ayuda de LibreOffice.</h1></div></noscript>
      <a id="N0430"></a>         <meta itemprop="keywords" content="BASIC,llamadas a Python">
<meta itemprop="keywords" content="API,SimpleFileAccess">
<meta itemprop="keywords" content="API,PathSettings">
<meta itemprop="keywords" content="API,XScript">
      <h1 id="hd_id811571848401485" dir="auto">
<a id="basic2python"></a>Invocar secuencias de Python desde Basic</h1>
      <p id="N0432" class="paragraph" dir="auto">Se pueden invocar secuencias de Python desde las macros de LibreOffice Basic y así sacar provecho de funcionalidades como las siguientes:</p>
      <ul itemprop="Unordered" itemscope="true" itemtype="http://schema.org/ItemList" dir="auto">
         <li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0433" class="listitem" dir="auto">Posibilidad de identificar el valor de <span class="literal">ComputerName</span> o detectar <span class="literal">OSName</span>,</p></li>
         <li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0434" class="listitem" dir="auto">Las funciones <span class="literal">FileLen()</span> de Basic y <a target="_blank" href="https://api.libreoffice.org/docs/idl/ref/servicecom_1_1sun_1_1star_1_1ucb_1_1SimpleFileAccess.html">com.sun.star.ucb.SimpleFileAccess.</a><span class="literal">getSize()</span> de la API tienen un límite máximo del tamaño de archivo de 2 Gigabytes que se puede superar con Python.</p></li>
         <li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0435" class="listitem" dir="auto">Es posible normalizar <a target="_blank" href="https://api.libreoffice.org/docs/idl/ref/servicecom_1_1sun_1_1star_1_1util_1_1PathSettings.html">com.sun.star.util.PathSettings</a></p></li>
         <li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0436" class="listitem" dir="auto">y mucho más.</p></li>
      </ul>
      <div class="tip">
<div class="noteicon" dir="auto"><img src="media/icon-themes/res/helpimg/tip.svg" alt="tip" style="width:40px;height:40px;"></div>
<div class="notetext"><p id="N0437" dir="auto">Se recomienda familiarizarse con las prestaciones de LibreOffice BASIC y la <a target="_blank" href="https://api.libreoffice.org/">interfaz de programación de aplicaciones (API)</a> antes de realizar invocaciones interlenguaje desde BASIC hacia Python, JavaScript u otro motor de ejecución de secuencias de órdenes.</p></div>
</div>
<br>
      <h2 id="N0438" dir="auto">Recuperar secuencias de órdenes Python</h2>
      <p id="N0439" class="paragraph" dir="auto">Las secuencias de Python pueden ser independientes, compartidas o estar incrustadas en los documentos. Para ejecutarlas, se deben incluir las ubicaciones de las secuencias de Python en LibreOffice Basic. Ubicando objetos UNO que se ajusten a la interfaz <a target="_blank" href="https://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1script_1_1provider_1_1XScript.html">com.sun.star.script.provider.XScript</a> permite que se ejecuten las secuencias de Python.</p>
      <div class="bascode" itemscope="true" itemtype="http://schema.org/SoftwareSourceCode" itemprop="codeSampleType" content="snippet" data-tooltip="Pulse en el texto para copiarlo en el portapapeles"><pre dir="auto"><code class="language-visual-basic line-numbers">
         Option Explicit
             
         Public Function GetPythonScript(macro As String, _
                 Optional location As String) As com.sun.star.script.provider.Xscript
             ''' Tomar el objeto con las secuencias de Python antes de ejecutar
             ' Argumentos:
             '    macro   : como «library/module.py$macro» o «module.py$macro»
             '    location: como «document», «share», «user» o ENUM(eración)
             ' Resultado:
             '    localizose el servicio de UNO com.sun.star.script.provider.XScript'''
             If IsMissing(location) Then location = "user"
             Dim mspf As Object ' com.sun.star.script.provider.MasterScriptProviderFactory
             Dim sp As Object ' compatible con com.sun.star.script.provider.XScriptProvider
             Dim uri As String
             If location="document" Then
                 sp = ThisComponent.getScriptProvider()
             Else
                 mspf = CreateUnoService("com.sun.star.script.provider.MasterScriptProviderFactory")
                 sp = mspf.createScriptProvider("")
             End If
             uri = "vnd.sun.star.script:"&amp; macro &amp;"?language=Python&amp;location="&amp; location
             GetPythonScript = sp.getScript(uri)
         End Function ' GetPythonScript
      </code></pre></div>
      <h2 id="N0463" dir="auto">Ejecutar secuencias de órdenes de Python</h2>
      <div class="embedded">
<a id="APIScriptingFramework"></a>
		 <p id="N0336" class="paragraph" dir="auto">El marco de programación de macros de la API (interfaz de programación de aplicaciones) de LibreOffice admite la ejecución de secuencias de órdenes entre Python y Basic u otros lenguajes de programación admitidos. Los argumentos se pueden pasar de un lado a otro entre llamadas, siempre que representen tipos de datos primitivos que ambos lenguajes reconozcan y suponiendo que el marco de programación de macros los convierta de forma adecuada.</p>
	  </div>
      <h3 id="N0464" dir="auto">Sintaxis</h3>
      <p id="N0465" class="paragraph" dir="auto"><span class="literal">workstation_name = script.invoke(Array(), Array(), Array())</span></p>
      <p id="N0466" class="paragraph" dir="auto"><span class="literal">opSysName = script.invoke(Array(), in_outs, Array())</span> ' in_out es una matriz</p>
      <p id="N0467" class="paragraph" dir="auto"><span class="literal">file_len = script.invoke(Array(systemFilePath), Array(), Array())</span></p>
      <p id="N0468" class="paragraph" dir="auto"><span class="literal">normalizedPath = script.invoke(Array(systemFilePath), Array(), Array())</span></p>
      <h3 id="N0469" dir="auto">Ejemplos de secuencias de órdenes incrustadas</h3>
      <p id="N0470" class="paragraph" dir="auto">Las rutinas que se describen a continuación, <span class="literal">ComputerName</span> y <span class="literal">GetFilelen</span>, llaman a sus homólogas en Python utilizando la función <span class="literal">GetPythonScript</span> ya mencionada. No se detallará el tratamiento de excepciones.</p>
      <div class="bascode" itemscope="true" itemtype="http://schema.org/SoftwareSourceCode" itemprop="codeSampleType" content="snippet" data-tooltip="Pulse en el texto para copiarlo en el portapapeles"><pre dir="auto"><code class="language-visual-basic line-numbers">
         Option Explicit
         Option Compatible ' Se admiten propiedades
             
         Private scr As Object ' com.sun.star.script.provider.XScript
             
         Private Property Get ComputerName As String
             '''Nombre de la estación de trabajo'''
             scr = GetPythonScript("Platform.py$computer_name", "document")
             ComputerName = scr.invoke(Array(), Array(), Array())
         End Property ' ComputerName
             
         Private Function GetFilelen(systemFilePath As String) As Currency
             '''Tamaño del archivo en bytes'''
             scr = GetPythonScript("Os/Path.py$get_size", Script.ISEMBEDDED)
             GetFilelen = scr.invoke(Array(systemFilePath), Array(), Array(),)
         End Function ' GetFilelen
             
         Private Type _SCRIPT_LOCATION
             ISEMBEDDED As String ' secuencia de órdenes del documento
             ISPERSONAL As String ' secuencia de órdenes del usuario
             ISSHARED As String ' macro de LibreOffice
         End Type ' _SCRIPT_LOCATION
             
         Public Function Script() As Object ' Text enumeration
             Static enums As _SCRIPT_LOCATION : With enums
             If .ISEMBEDDED = "" Then
                 .ISEMBEDDED = "document" ' secuencia de órdenes del documento
                 .ISPERSONAL = "user" ' secuencias de órdenes del usuario
                 .ISSHARED = "share" ' macro de LibreOffice
             End If : End With ' enums
             Script = enums
         End Function ' Script
      </code></pre></div>
      <p id="N0503" class="paragraph" dir="auto">Se llaman dos módulos del lenguaje de programación Python. Estos pueden o estar incrustados en el documento actual o estar almacenados en el sistema de archivos. La comprobación de los tipos de argumento se ha omitido para mayor claridad:</p>
      <ul itemprop="Unordered" itemscope="true" itemtype="http://schema.org/ItemList" dir="auto">
         <li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0504" class="paragraph" dir="auto">Platform.py</p></li>
      </ul>
      <div class="pycode" itemscope="true" itemtype="http://schema.org/SoftwareSourceCode" itemprop="codeSampleType" content="snippet" data-tooltip="Pulse en el texto para copiarlo en el portapapeles"><pre dir="auto"><code class="language-python line-numbers">
         # -*- coding: utf-8 -*-
         from __future__ import unicode_literals
          
         import platform
          
         def computer_name() -&gt; str:
             return platform.node()
          
         def OSname() -&gt; str:
             return platform.system()
      </code></pre></div>
      <ul itemprop="Unordered" itemscope="true" itemtype="http://schema.org/ItemList" dir="auto">
         <li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0515" class="paragraph" dir="auto">Os/Path.py</p></li>
      </ul>
      <div class="pycode" itemscope="true" itemtype="http://schema.org/SoftwareSourceCode" itemprop="codeSampleType" content="snippet" data-tooltip="Pulse en el texto para copiarlo en el portapapeles"><pre dir="auto"><code class="language-python line-numbers">
         # -*- coding: utf-8 -*-
         from __future__ import unicode_literals
          
         import os.path
          
         def get_size(systemFilePath: str) -&gt; str:
             return str(os.path.getsize(systemFilePath))
          
         def normalyze(systemPath: str) -&gt; str:
             return os.path.normpath(systemPath)
      </code></pre></div>
      <h3 id="N0526" dir="auto">Ejemplos de secuencias personales o compartidas</h3>
      <p id="N0527" class="paragraph" dir="auto">El mecanismo de llamada de las secuencias Python personales o compartidas es idéntico al de las secuencias incrustadas. Los nombres de las bibliotecas se asignan a carpetas. Calcular el perfil de usuario de LibreOffice y las rutas de los archivos de módulos compartidos se puede llevar a cabo como se detalla en <a target="_top" href="es/text/sbasic/python/python_session.html">Obtener información de la sesión</a>. Las rutinas que se describen a continuación, <span class="literal">OSName</span>, <span class="literal">HelloWorld</span> y <span class="literal">NormalizePath</span>, llaman a sus homólogas en Python utilizando la función <span class="literal">GetPythonScript</span> ya mencionada. No se detallará el tratamiento de excepciones.</p>
      <div class="bascode" itemscope="true" itemtype="http://schema.org/SoftwareSourceCode" itemprop="codeSampleType" content="snippet" data-tooltip="Pulse en el texto para copiarlo en el portapapeles"><pre dir="auto"><code class="language-visual-basic line-numbers">
         Option Explicit
         Option Compatible ' Se admiten propiedades
             
         Private scr As Object ' com.sun.star.script.provider.XScript
             
         Private Property Get OSName As String
             '''Nombre de plataforma, como «Linux», «Darwin» o «Windows»'''
             scr = GetPythonScript("Platform.py$OSname", Script.ISPERSONAL)
             OSName = scr.invoke(Array(), Array(), Array()) 
         End Property ' OSName
             
         Private Sub HelloWorld()
             '''ejemplo de Python compartido en LibreOffice'''
             scr = GetPythonScript("HelloWorld.py$HelloWorldPython", Script.ISSHARED)
             scr.invoke(Array(), Array(), Array(),)
         End Sub ' HelloWorld
             
         Public Function NormalizePath(systemFilePath As String) As String
             '''Quitar el «\..» superfluo de la ruta'''
             scr = GetPythonScript("Os/Path.py$normalyze", "user")
             NormalizePath = scr.invoke(Array(systemFilePath), Array(), Array())
         End Function ' NormalizePath
      </code></pre></div>
      <h2 id="N0550" dir="auto">Módulos estándares de Python</h2>
      <p id="N0551" class="paragraph" dir="auto">La versión de Python incluida en LibreOffice contiene numerosas bibliotecas estándares que puede aprovechar. Entre sus funcionalidades se encuentran:</p>
      <ul itemprop="Unordered" itemscope="true" itemtype="http://schema.org/ItemList" dir="auto">
         <li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0552" class="listitem" dir="auto"><span class="emph">argparse</span>: analizador sintáctico para opciones, argumentos y subórdenes de consola</p></li>
         <li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0553" class="listitem" dir="auto"><span class="emph">cmath</span>: funciones matemáticas para números complejos</p></li>
         <li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0554" class="listitem" dir="auto"><span class="emph">csv</span>: lectura y guardado de archivos CSV</p></li>
         <li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0555" class="listitem" dir="auto"><span class="emph">datetime</span>: tipos de fecha y hora genuinos</p></li>
         <li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0556" class="listitem" dir="auto"><span class="emph">json</span>: codificador y descodificador de JSON</p></li>
         <li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0557" class="listitem" dir="auto"><span class="emph">math</span>: funciones matemáticas</p></li>
         <li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0558" class="listitem" dir="auto"><span class="emph">re</span>: operaciones con expresiones regulares</p></li>
         <li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0559" class="listitem" dir="auto"><span class="emph">socket</span>: interfaz de redes de bajo nivel</p></li>
         <li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0560" class="listitem" dir="auto"><span class="emph">sys</span>: parámetros y funciones específicas del sistema</p></li>
         <li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0561" class="listitem" dir="auto"><span class="emph">unittest</span> y <span class="emph">trace</span>: marco para pruebas unitarias y seguimiento de ejecución para Python</p></li>
         <li itemprop="itemListElement" itemscope="true" itemtype="http://schema.org/ItemListUnordered" dir="auto"><p id="N0562" class="listitem" dir="auto"><span class="emph">xml.etree.ElementTree</span>: API de ElementTree en XML</p></li>
      </ul>
      <a id="relatedtopics"></a><div class="relatedtopics">
<p class="related" itemprop="mentions" dir="auto"><a id="related"></a><span class="emph">Temas relacionados</span></p>
<div class="relatedbody" itemprop="mentions">
         <div class="embedded"><p class="embedded" dir="auto"><a target="_top" href="es/text/sbasic/python/python_2_basic.html">Llamar macros en Basic desde Python</a></p></div>
         <div class="embedded"><p class="embedded" dir="auto"><a target="_top" href="es/text/sbasic/shared/main0601.html">Ayuda de LibreOffice Basic</a></p></div>
         <div class="embedded"><p class="embedded" dir="auto"><a target="_top" href="es/text/sbasic/python/main0000.html">Ayuda con las macros en Python en LibreOffice</a></p></div>
      </div>
</div>
   </div>
<div id="DonationFrame"></div>
<footer><h2 style="text-align: center;"><a href="https://books.libreoffice.org" target="_blank">Libros de LibreOffice</a></h2>
<div class="noteicon" dir="auto" style="display:flex;justify-content:center;flex-wrap:wrap;row-gap:15px;">
<img src="media/navigation/libo-writer.svg" alt="Writer Icon" style="width:60px;height:60px;"><img src="media/navigation/libo-calc.svg" alt="Calc Icon" style="width:60px;height:60px;"><img src="media/navigation/libo-impress.svg" alt="Impress Icon" style="width:60px;height:60px;"><img src="media/navigation/libo-draw.svg" alt="Draw Icon" style="width:60px;height:60px;"><img src="media/navigation/libo-base.svg" alt="Base Icon" style="width:60px;height:60px;"><img src="media/navigation/libo-math.svg" alt="Math Icon" style="width:60px;height:60px;"><img src="media/navigation/libo-symbol-black.svg" alt="Getting Started Icon" style="width:60px;height:60px;">
</div>
<div id="DEBUG" class="debug">
<h3 class="bug">Help content debug info:</h3>
<p dir="auto">This page is: <a href="https://opengrok.libreoffice.org/xref/help/source/text/sbasic/guide/basic_2_python.xhp" target="_blank">/text/sbasic/guide/basic_2_python.xhp</a></p>
<p dir="auto">Title is: De BASIC a Python</p>
<p id="bm_module" dir="auto"></p>
<p id="bm_system" dir="auto"></p>
<p id="bm_HID" dir="auto"></p>
</div></footer>
</body>
</html>

Filemanager

Name Type Size Permission Actions
access2base.html File 9 KB 0644
basic_2_python.html File 19.88 KB 0644
basic_examples.html File 5.73 KB 0644
calc_borders.html File 18.93 KB 0644
control_properties.html File 5.74 KB 0644
create_dialog.html File 6.62 KB 0644
insert_control.html File 6.07 KB 0644
read_write_values.html File 19.41 KB 0644
sample_code.html File 11.1 KB 0644
show_dialog.html File 7.01 KB 0644
translation.html File 11.39 KB 0644
Filemanager