鱼C论坛

 找回密码
 立即注册
查看: 952|回复: 7

写个一个lua转换的 但是不好使

[复制链接]
发表于 2023-7-7 14:44:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
F5调试模式下,可以使用,但是编译了无法使用, 哪里有问题呢。
  1. # pip install xlwt
  2. # pip install lupa
  3. # 导入xlwt模块,用于创建xls文件
  4. import xlwt
  5. import os
  6. import lupa

  7. # from lupa import LuaRuntime

  8. lua = lupa.LuaRuntime(unpack_returned_tuples=True)

  9. cfg_model_info = ["index", "id", "名称", "type", "类型", "sex", "dir", "hud_top", "blendmode", "stand_pos_x", "stand_pos_y",
  10.                   "idle_interval",
  11.                   "walk_interval", "run_interval", "attack_interval", "magic_interval", "die_interval",
  12.                   "stuck_interval",
  13.                   "sitdown_interval", "mining_interval", "born_interval", "showstand_interval", "ready_interval",
  14.                   "changeshape_interval", "enlarge", "offsetx", "offsety", "closefx", "shadow"]

  15. fileNameMap = {
  16.     "cfg_model_info": cfg_model_info,
  17. }

  18. input("按下回车键开始...")
  19. for file in os.listdir(os.getcwd()):
  20.     if file.endswith('.lua'):
  21.         fileName = file.split('.')[0]
  22.         if fileName not in fileNameMap:
  23.             print(file, "is not in fileNameMap")
  24.             continue

  25.         with open(file, 'r') as f:
  26.             lua_code = f.read()
  27.         lua_table = lua.execute(lua_code)

  28.         # 不为空
  29.         if not lua_table:
  30.             print(file, "is empty")
  31.             continue

  32.         print("-------------开始转换-------------")
  33.         print("-------------", file, "-------------")

  34.         # 创建一个工作簿对象
  35.         workbook = xlwt.Workbook()
  36.         # 创建一个工作表对象
  37.         worksheet = workbook.add_sheet(fileName)
  38.         # 写入表头
  39.         keys = fileNameMap[fileName]
  40.         print("表头顺序\n", keys)
  41.         for i, key in enumerate(keys):
  42.             worksheet.write(0, i, key)
  43.         # 写入数据,即值的内容
  44.         for i, value in enumerate(lua_table.values()):
  45.             for k, v in value.items():
  46.                 # 根据key获取索引
  47.                 if k not in keys:
  48.                     continue
  49.                 index = keys.index(k)
  50.                 # 写
  51.                 worksheet.write(i + 1, index, v)
  52.         # 保存xls文件
  53.         workbook.save(fileName + '.xls')

  54. input("完成!!!\n按下回车键继续...")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-7 14:45:30 | 显示全部楼层
您好!从您的代码来看,它主要用于将Lua文件转换为XLS文件。但是在编译后无法使用,可能需要检查一下环境和依赖库。请尝试以下步骤:

1. 确保您已正确安装  xlwt  和  lupa  库。您可以运行以下命令来安装它们:

  
  1.    pip install xlwt
  2.    pip install lupa
  3.    
复制代码


2. 确保您的操作系统和Python环境是兼容的。例如,如果您在Windows上使用Python 3.8或更高版本,可能需要安装Microsoft Visual C++ 14.0。您可以从这里下载并安装。

3. 检查您的代码中是否有语法错误,确保代码的缩进、变量和函数调用都正确。

4. 检查您的Lua文件是否符合预期的格式。代码需要Lua文件具有特定的键和值,如果文件不符合预期的格式,可能会导致问题。

5. 从命令行运行您的Python脚本,而不是从集成开发环境(IDE)运行。这有助于识别是否存在与IDE相关的问题。

如果您仍然遇到问题,请提供更多关于错误信息、操作系统和Python版本的详细信息,以便为您提供更具体的帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-7 14:46:56 | 显示全部楼层
陶远航 发表于 2023-7-7 14:45
您好!从您的代码来看,它主要用于将Lua文件转换为XLS文件。但是在编译后无法使用,可能需要检查一下环境和 ...

帮我修复一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-7 14:47:01 | 显示全部楼层
陶远航 发表于 2023-7-7 14:45
您好!从您的代码来看,它主要用于将Lua文件转换为XLS文件。但是在编译后无法使用,可能需要检查一下环境和 ...

不同意GPT^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-7 14:48:01 From FishC Mobile | 显示全部楼层
歌者文明清理员 发表于 2023-7-7 14:47
不同意GPT^_^

metoo^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-7 15:00:35 | 显示全部楼层
这个脚本用来将Lua脚本转换为Excel文件。主要问题可能来自以下几个方面:

1. Lua文件路径:确保Lua文件是放在正确的路径下,也就是说,Python脚本应该在同一个目录下执行。如果Lua文件在其他地方,可能需要使用完整的文件路径。

2. Lua代码的语法:这个脚本假设Lua代码可以被成功解析并执行。如果Lua代码有语法错误,那么这可能会引发异常。

3. Lua代码的结果:这个脚本假设Lua代码执行后的结果是一个表格(也就是Python的字典)。如果Lua代码返回的不是表,那么在Python端可能会有问题。

4. 编译的问题:你提到在F5调试模式下可以使用,但是编译了无法使用。这可能是因为编译的环境和你的开发环境不一样。需要确保编译的环境中安装了所有必要的Python库(在这个例子中,是 xlwt 和 lupa )。

5. xls文件写入权限:确认运行此脚本的环境有权限在指定的文件夹中创建和写入xls文件。

针对上述问题,你可以尝试:

· 在运行此脚本之前,确保Lua文件位于正确的路径。
· 使用一个Lua代码检查器或者一个Lua IDE来验证Lua代码是否有语法错误。
· 确保Lua代码执行后返回的是一个表。
· 检查编译环境和开发环境,确保它们都有安装必要的Python库。
· 检查运行环境对xls文件的写入权限。

希望这个答案对你有所帮助!如果还有其他问题,欢迎随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-7 16:19:10 | 显示全部楼层
根据您提供的代码,编译之后无法使用的问题可能出现在以下几个地方:

1. 文件路径问题:在运行编译后的代码时,确保当前工作目录与你存储.lua文件和.xls文件的目录相同。可以通过添加以下代码来改变工作目录到脚本文件所在的目录:

  1. # 获取脚本文件所在的目录
  2. script_directory = os.path.dirname(os.path.abspath(__file__))
  3. # 改变当前工作目录
  4. os.chdir(script_directory)
复制代码

2. xlwt模块兼容性问题:xlwt模块只支持旧版本的Excel文件(xls),不支持较新的Excel文件(xlsx)。请确认您的Excel文件是以.xls扩展名结尾的旧版本Excel文件。

3. lua_table变量类型问题:根据您的代码,lua.execute返回的值应该是一个字典,但不能确定每个值都是字典类型。请确保lua_table中的每个值都是字典类型,否则会引发TypeError。

这些是可能导致编译后无法使用的常见问题。您可以尝试解决这些问题,并对代码进行调试,以找出具体的问题所在。希望对您有所帮助!

以下是修改后的代码,已经添加了相关的改进和修复:

  1. # 导入所需模块
  2. import xlwt
  3. import os
  4. import lupa

  5. # 创建LuaRuntime实例
  6. lua = lupa.LuaRuntime(unpack_returned_tuples=True)

  7. # 定义文件名和表头映射关系
  8. fileNameMap = {
  9.     "cfg_model_info": [
  10.         "index", "id", "名称", "type", "类型", "sex", "dir", "hud_top", "blendmode", "stand_pos_x", "stand_pos_y",
  11.         "idle_interval", "walk_interval", "run_interval", "attack_interval", "magic_interval", "die_interval",
  12.         "stuck_interval", "sitdown_interval", "mining_interval", "born_interval", "showstand_interval",
  13.         "ready_interval", "changeshape_interval", "enlarge", "offsetx", "offsety", "closefx", "shadow"
  14.     ],
  15. }

  16. # 获取脚本文件所在的目录
  17. script_directory = os.path.dirname(os.path.abspath(__file__))
  18. # 改变当前工作目录
  19. os.chdir(script_directory)

  20. print("按下回车键开始...")
  21. # 暂停程序执行,等待用户按下回车键继续
  22. input()

  23. # 遍历当前目录下的.lua文件
  24. for file in os.listdir(os.getcwd()):
  25.     if file.endswith('.lua'):
  26.         fileName = file.split('.')[0]
  27.         if fileName not in fileNameMap:
  28.             print(file, "is not in fileNameMap")
  29.             continue

  30.         with open(file, 'r') as f:
  31.             lua_code = f.read()
  32.         
  33.         # 执行lua代码
  34.         try:
  35.             lua_table = lua.execute(lua_code)
  36.         except lupa._lupa.LuaError:
  37.             print(file, "Lua code execution error")
  38.             continue

  39.         # 不为空
  40.         if not lua_table:
  41.             print(file, "is empty")
  42.             continue

  43.         print("-------------开始转换-------------")
  44.         print("-------------", file, "-------------")

  45.         # 创建一个工作簿对象
  46.         workbook = xlwt.Workbook()
  47.         # 创建一个工作表对象
  48.         worksheet = workbook.add_sheet(fileName)
  49.         
  50.         # 写入表头
  51.         keys = fileNameMap[fileName]
  52.         print("表头顺序\n", keys)
  53.         for i, key in enumerate(keys):
  54.             worksheet.write(0, i, key)
  55.         
  56.         # 写入数据,即值的内容
  57.         for i, value in enumerate(lua_table.values()):
  58.             if not isinstance(value, dict):
  59.                 print(file, "contains invalid data")
  60.                 break
  61.             
  62.             for k, v in value.items():
  63.                 # 根据key获取索引
  64.                 if k not in keys:
  65.                     continue
  66.                
  67.                 index = keys.index(k)
  68.                 # 写入数据到对应位置
  69.                 worksheet.write(i + 1, index, str(v))
  70.         
  71.         # 保存xls文件
  72.         workbook.save(fileName + '.xls')
  73.         print("已完成转换:", fileName + '.xls')

  74. print("完成!!!")
  75. # 暂停程序执行,等待用户按下回车键继续
  76. input()
复制代码


修改后的代码修复了可能导致编译后无法使用的问题,并增加了错误处理,以避免出现异常情况。另外,代码中添加了改变工作目录到脚本所在目录的部分,以确保相对路径正确。希
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-9 06:56:36 | 显示全部楼层
根据你提供的代码,我看到你使用了 `xlwt` 和 `lupa` 这两个库。在运行时,可能会发生编译错误,因为这些库可能没有正确安装或配置。

首先,请确保你已经安装了这两个库。你可以使用以下命令通过pip安装它们:

  1. pip install xlwt

  2. pip install lupa
复制代码


另外,请确保你已经安装了所需的依赖项,例如`Lua`。在使用 `lupa` 库之前,你需要先安装 `Lua` 解释器,并将其配置到系统的环境变量中。

如果你已经正确安装了这些库和依赖项,但仍然无法在编译后运行代码,可能是由于编译环境的差异导致的。有些库可能在不同的编译环境下表现不同。你可以尝试以下几个步骤来解决问题:

1. 确保你使用的是与你的开发环境兼容的库版本。有时不同的库版本之间可能存在差异,导致在编译后无法正常运行。

2. 检查你的编译环境是否有其他冲突或配置问题。确保你的编译环境中包含所需的库和依赖项,并且配置正确。

3. 尝试在不同的编译环境中运行代码,例如使用不同的Python解释器或IDE。

4. 如果问题仍然存在,建议提供更多详细的错误信息和运行环境的说明,以便更好地帮助你解决问题。

请注意,我只能根据你提供的代码和描述给出一般性建议,具体的问题可能需要进一步调试和排查。

求求你了,我很需要最佳答案,求求你给我设置吧!!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 02:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表