You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scilab循环使用execstr与csvRead读取文件报错及语言设置问题

问题1:代码报错解决

报错原因分析

你遇到的报错是因为execstr拼接的命令存在语法问题:

  • 原代码中string("StepPo135.txt")会生成包含双引号的字符串(例如"StepPo135.txt"),导致execstr执行的命令出现字符串嵌套引号的语法错误;
  • ls('*.txt','r')返回的文件名可能带有末尾空格,也会导致文件名解析异常。

修正后的代码

方法1:用文件名作为变量名(修正execstr语法)

datfiles = ls('*.txt', 'r');
// 移除文件名末尾的无效空格
datfiles = strip(datfiles, 'right');

for i = 1:size(datfiles, 1)
    filename = datfiles(i, :);
    // 提取不含后缀的文件名作为变量名
    var_name = strtok(filename, '.');
    // 用单引号包裹文件名,避免双引号嵌套的语法问题
    execstr(var_name + ' = csvRead(''' + filename + ''', ascii(9), [], ''string'')');
end

方法2:用结构体存储(更安全推荐)

避免execstr的潜在语法风险,用结构体统一管理所有读取的数据:

data_store = struct();
datfiles = ls('*.txt', 'r');
datfiles = strip(datfiles, 'right');

for i = 1:size(datfiles, 1)
    filename = datfiles(i, :);
    var_name = strtok(filename, '.');
    // 将数据存入结构体的对应字段
    data_store.(var_name) = csvRead(filename, ascii(9), [], 'string');
end
问题2:Scilab报错语言强制改为英文

即使偏好设置为英文仍显示德语报错,可通过以下方式解决:

  • 修改配置文件:
    1. 关闭Scilab;
    2. 找到Scilab的配置文件:
      • Windows:%APPDATA%\Scilab\scilab.ini
      • Linux/macOS:~/.Scilab/scilab.ini
    3. 在文件中添加一行:language=en_US,保存后重启Scilab;
  • 命令行启动参数:
    启动Scilab时添加参数强制指定语言:
    scilab -l en_US
    
  • 系统区域设置(Windows):
    进入「控制面板→区域→管理→非Unicode程序的语言」,设置为「英语(美国)」,重启系统后生效。

内容的提问来源于stack exchange,提问作者Kwas Poser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 11:27:09