当前位置:首页 » 编程语言 » lua调用python

lua调用python

发布时间: 2025-02-04 16:49:57

‘壹’ 求一个cmd或python脚本

这茄判可以用Python实现。下面是一个参考脚本:
import os
import json
path = 'e:/a/'
for filename in os.listdir(path):
if filename.endswith('.lua'):
with open(path + filename) as f:
lines = f.readlines()
content = "".join(lines).replace("=", ":").replace("[", "").replace("]", ""芦卜).replace(",", "").replace("{", "").replace("}", "")
content = content.split("\n")
data = {}
for line in content:
if line.strip() != "":
parts = line.strip().split(":")
key = parts[0].strip()
value = parts[1].strip()
if value.isdigit():
value = int(value)
data[key] = value
with open(path + filename[:-4] + '.json', 'w') as f:
f.write(json.mps({"TestCfg": data}))
注意:本脚本仅作为参考,没有对文件进行全面的错误处理,仅适用于样例文件的格式。请在使用时陪纳穗仔细阅读代码,根据您的实际情况做适当的修改。

‘贰’ lua如何调用java程序

Lua是一个实用的脚本语言,相对于Python来说,比较小巧,但它功能并不逊色,特别是在游戏开发中非常实用(WoW采用的就是Lua作为脚本的)。Lua在C\C++的实现我就不多说了,网上随便一搜,到处都是这方面的介绍,我想说的是如何在Java下使用Lua以提高编程效率、增强你的程序可扩展性。

首先,要在Java上使用Lua脚本,必须有关于Lua脚本解释器以及Java程序可以访问这些脚本的相关API,即相关类库。我使用的是一个叫做LuaJava的开源项目,可以在: http://www.keplerproject.org/luajava/ 找到LuaJava的类库以及源代码,使用文档资等

下载下来解压后包括两个文件(我下载的是1.1版本的): luajava-1.1.jar 文件和 luajava-1.1.dll动态连接库文件

luajava-1.1.jar就容易了,就是将其加入你的项目的ClassPath中,以便程序可以使用它提供的API

luaJava-1.1.dll就麻烦了,你必须将其加入你的Windows安装目录下,比如你用的是XP,安装在C盘,那就直接将其加入C:\WINDOWS目录下即可,当然你也可以将其加入你的JDK下的jre下

好了,现在你的项目就可以使用Lua脚本来实现动态扩展功能了!不过不要急,你还得有工具来写Lua脚本吧?不可能用记事本来写吧???????

你可以使用UltraEdit,但你用UE打开lua文件后,会发现和记事本差不多,并没有高亮(可能新版本的支持Lua脚本了),如果你的UE不支持,那么先去UltraEdit的官网下载支持Lua的Wordfiles文件(http://www.ultraedit.com/files/wf/lua.txt),是个文本文件(lua.txt)。打开UltraEdit安装目录下的wordfile.txt,把lua.txt文件中的内容拷贝粘贴到wordfile.txt的末尾,存盘,OK,于是UltraEdit语法高亮项多出Lua一项,可以选择使用了。其他语言的语法高亮支持与此类似。

但你如果是Java开发者,应该都用过Eclipse吧?可否在Eclipse下直接就写Lua脚本呢?答案是可以的!

这当然是Eclipse的强大的插件管理功能啦,你可以去下载luaeclipse插件来使你的Eclipse拥有编写Lua脚本的能力(既可以高亮显示你的脚本,是不是很爽呢),你可以在这里下载:http://www.ideais.com.br/luaeclipse/

下载后安装后,你的Eclipse就可以建立和编写Lua脚本了,注意设置一下首选项中关于LUA的属性(Eclipse安装插件就不用我说了吧????)

好了,现在一切都准备好了,让我们来一个HelloWorld吧!

首先在Eclipse先建立一个TestLua项目,然后编写如下程序:

import org.keplerproject.luajava.*;

public class Hello
{
public static void main(String[] args)
{
LuaState L = LuaStateFactory.newLuaState();
L.openLibs();
System.out.println("这里是Java程序调用Lua脚本");

// 加载脚本hello.lua,并执行
L.LdoFile("res/hello.lua");
}
}

好了,程序写完了,当然是保存为Hello.java咯,注意,这是Java代码!这是Java代码调用了一个叫hello.lua的脚本,下边是这个脚本文件的内容(你可以直接把他们复制到你的hello.lua文件中):

================================================================

--基本方法
print("您现在使用的是LUA脚本语言")
print("让我们一起来感受它的奇妙吧!\n")

--特点1,赋值
a={1,2}
b=a
print(a==b, a~=b) --输出 true, false
a={1,2}
b={1,2}
print(a==b, a~=b) --输出 false, true

--特点2,交换
a,b=1,2
a,b=b,a
print(a)
print(b)

print("连接".."字符串"..2^3)
print(type(2))

--while循环
i=0
print("while循环例子")
while i<5
do
print(i);
i=i+1
end

--repeat循环
i=0
print("repeat循环例子")
repeat
print(i)
i=i+1
until i>=5

--for循环
print("for循环例子")
for i=0,5,1
do
print(i)
end

T1={}
T1[1] = 10
print(T1[1])

function fun(a,b,...)
print(a)
print(b)
print(arg[1])
print(arg[2])
print(arg[3])
return
end

a,b=2,3
fun(a,b,200,400,500)

========================================================

好了,上边的脚本如果你不懂什么意思也没关系,直接运行一下吧

你可以执行编译执行那个Hello.java程序就可以了,就会看到如下的输出结果:

========================================================

这里是Java程序调用Lua脚本
您现在使用的是LUA脚本语言
让我们一起来感受它的奇妙吧!

true false
false true
2
1
连接字符串8
number
while循环例子
0
1
2
3
4
repeat循环例子
0
1
2
3
4
for循环例子
0
1
2
3
4
5
10
2
3
200
400
500

==========================================================

怎样,是不是很爽呢?觉得没意思?好,在来一段脚本吧:

frame = luajava.newInstance("java.awt.Frame", "Lua Java Console")
console = luajava.newInstance("java.awt.TextArea")
buttons_pn = luajava.newInstance("java.awt.Panel")
execute_bt = luajava.newInstance("java.awt.Button", "Execute")
clear_bt = luajava.newInstance("java.awt.Button", "Clear")
exit_bt = luajava.newInstance("java.awt.Button", "Exit")

frame:setSize(600,300)

buttons_pn:add(execute_bt)
buttons_pn:add(clear_bt)
buttons_pn:add(exit_bt)

BorderLayout = luajava.bindClass("java.awt.BorderLayout")

frame:add(BorderLayout.NORTH, console)
frame:add(BorderLayout.SOUTH, buttons_pn)
frame:pack()
frame:show()

--
-- Listeners
--

execute_cb = {
actionPerformed = function(ev)
print("execute")
pcall(loadstring(console:getText()))
end
}

jproxy = luajava.createProxy("java.awt.event.ActionListener",execute_cb)

execute_bt:addActionListener(jproxy)

clear_cb = {actionPerformed= function (ev)
print("clear");
console:setText("");
end
}

jproxy = luajava.createProxy("java.awt.event.ActionListener" ,clear_cb)
clear_bt:addActionListener(jproxy)

exit_cb = { actionPerformed=function (ev)
print("exit")
frame:setVisible(false)
frame:dispose()
end
}

jproxyb = luajava.createProxy("java.awt.event.ActionListener" ,exit_cb)

exit_bt:addActionListener(jproxyb)

close_cb = { }
function close_cb.windowClosing(ev)
print("close")
frame:setVisible(false)
frame:dispose()
end

function close_cb.windowActivated(ev)
print("act")
end

jproxy = luajava.createProxy("java.awt.event.WindowListener", close_cb)
frame:addWindowListener(jproxy)

这段脚本运行后你将会非常想进一步了解LUA的奥妙,至于什么我就不说了,你们自己运行看看吧。。。哈哈,就写到这里了,我去上下WC。。。。

‘叁’ python 如何实现类似lua中的 a = a or 0,即第一次声明a的时候就已经可以使用此语法了。在python中会报错

这是lua的语法or and的特殊之处
a and b 若a为真 则返回b 若a为假 则返回a本身
a or b 若a为真 则返回a 若a为假 则返回b
所以 c = a or b 对应的python语句是
if a:
c = a
else:
c = b
python很久没用了 不知道有没记错

‘肆’ lua编译器和编辑器 scite是编辑器 编写程序然后调用可以用cmd来 那么这个是做什么用的

lua可以编译,叫做luac,也可以直接解释执行。而运行lua后出现的称为lua shell,可以直接执行用户敲入的lua语句,方便用户调试。python也有类似的shell,比如idle什么的。ruby也有。就是可以将用户敲入的合法语句直接解释执行。

‘伍’ Python相比Lua做游戏脚本有哪些优势和劣势

这是国外的一个程序员写的比较:
在游戏中使用选择lua,有可能是因为lua稍比python更高效一些,还有就是lua调用c是很方便的

‘陆’ lua是什么语言

Lua 是一个小巧的脚本语言。作者是巴西人。该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。它的主页是 www.lua.org。
Lua最着名的应用是在暴雪公司的网络游戏WOW中。
Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,Ini等文件格式,并且更容易理解和维护。
Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。
一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。
Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能,这将给Lua带来更加优秀的性能。请访问 http://luajit.org/来了解这个项目。
和Python等脚本不同,Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。不过Lua还是具备了比如数学运算和字符串处理等基本的功能。
Lua 目前的最新版本是 5.1.

‘柒’ Lua 的速度为什么比 Python 快

两者的定位是不同的。Python在它自己的独立开发中,这意味着Python可以解决所有的问题。Lua与其他代码一起定位,特别是c++代码,单Lua本身没有任何意义。


站在解决问题的角度

Python依赖其日益强大的库来允许程序员处理越来越复杂的问题。Lua本身必须用其他编译语言解决这个问题。例如,c +++ lua。单独的c++,因为c++的复杂性,在解决方案提供了一个方便的同时,也给程序员带来了很多麻烦。

这些问题主要有两个方面:

1。c++本身,特别是一个好的c++,是程序员的高要求。

2。在解决复杂问题时,c++程序结构的复杂性和逻辑实现的复杂性给程序员带来了很多麻烦,使得程序的改进和维护变得困难。c++和Lua的结合使c++能够负责提供Lua的各种基本功能库,Lua调用来实现各种逻辑功能。


总结:c++ lua开发模型与python源库开发+ python脚本开发模型是一样的。但是对于程序员来说,c++和lua更容易一些,因为除了基本的lua解释代码之外,c++还可以为lua的动态提供各种函数库。然而,Python程序员必须遵守Python提供的各种库。因此,在解决一些常见的和重复的问题时,python具有优势,因为有很多代码不需要重写,而且必须重构c++ + lua。为了解决一些非常常见的问题,python程序员必须返回到c++,如果他们没有一个库来解决这些问题的话

热点内容
在哪里开启密码显示 发布:2025-02-04 18:38:30 浏览:785
怎么查询qq密码 发布:2025-02-04 18:20:10 浏览:511
python编写接口 发布:2025-02-04 18:08:30 浏览:78
怎么给游戏设置密码 发布:2025-02-04 18:03:08 浏览:926
商品存储规划 发布:2025-02-04 17:45:24 浏览:567
ios访问共享 发布:2025-02-04 17:36:33 浏览:335
javabuild 发布:2025-02-04 17:30:19 浏览:592
gnulinux编译 发布:2025-02-04 17:30:18 浏览:132
苏州阿里云服务器专网 发布:2025-02-04 17:21:05 浏览:526
如何学习php 发布:2025-02-04 17:11:55 浏览:389