當前位置:首頁 » 編程語言 » 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 瀏覽:787
怎麼查詢qq密碼 發布:2025-02-04 18:20:10 瀏覽:512
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