递归打开多个数据文件<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我想找到一些可以递归打开 Windows 目录中的文件的代码。
假设我的路径是:c:\charlie\data
我希望 JMP 找到此目录及更低目录中的所有 *.txt 文件并将其全部打开。
最终我会将它们合并,但现在我只想将它们全部打开。
我尝试过(没有运气):
路径 = "C:\charlie\data\data1";
file_list = 目录中的文件("C:\charlie\data\data1");
对于 (i=1, i<=NItems(file_list), i++,
dt =
打开(
路径 ||文件列表,
导入设置(
行尾( CRLF, CR, LF ),
字段结束(逗号,其他(“0x7c”)),
剥离报价( 1 ),
使用撇号作为引号(0),
扫描整个文件( 1 ),
将空列视为数字 ( 0 ),
标签( 1 ),
列名开始( 1 ),
数据开始( 2 ),
要读取的行(全部),
年份规则(“20xx”)
)
);
);
回复:递归打开多个数据文件该脚本可以很好地打开目录中的所有文件,根据某些条件过滤它们,然后连接所有文件。
=================================================== =================================================== =
路径 = "C:\temp\data\";
文件列表={};
file_list = 目录中的文件(路径,递归);
myFiles = file_list;
For( i = 1, i <= N 项( file_list ), i++,
如果(包含(文件列表,“.sum”),
我的文件=“”
)
);
最终文件=我的文件;
///////////////////打开列表中的第一个文件///////////////////////
///////其他文件将附加到此文件中///////////
我=1;
dtjoin = 打开(
路径||最终文件,
列(
通过_失败=字符,
参数=字符,
数据值 = 数字,
单位=字符,
LSL = 数字,
USL = 数字,
注=字符,
Test_Cond = 字符
),
导入设置(
行尾( CRLF, CR, LF ),
字段结束(逗号,其他(“0x7c”)),
剥离报价( 1 ),
使用撇号作为引号(0),
扫描整个文件( 1 ),
将空列视为数字 ( 0 ),
标签( 1 ),
列名开始( 1 ),
数据开始( 2 ),
要读取的行(全部),
年份规则(“20xx”)
),
)
<< 设置名称("已加入1");
/////////////////////////////////////////////////////////// ////////////////////////////////////////////////////
//////////现在打开列表中剩余的文件///////////////
/////////////////////////////////////////////////////////// ////////////////////////////////////////////////////
我=2;
For( i = 2, i <= N Items( Final_files ), i++,
dt =
打开(
路径 ||最终文件,
列(
通过_失败=字符,
参数=字符,
数据值 = 数字,
单位=字符,
LSL = 数字,
USL = 数字,
注=字符,
Test_Cond = 字符
),
导入设置(
行尾( CRLF, CR, LF ),
字段结束(逗号,其他(“0x7c”)),
剥离报价( 1 ),
使用撇号作为引号(0),
扫描整个文件( 1 ),
将空列视为数字 ( 0 ),
标签( 1 ),
列名开始( 1 ),
数据开始( 2 ),
要读取的行(全部),
年份规则(“20xx”)
)
);
dtjoin = dtjoin << 连接(
德特,
输出表名( "Joined" || Char( i ) ),
);
关闭(dt,nosave);
Close( "已加入" || Char( i - 1 ), nosave );
等待(0.1);
); //For结束
dtjoin << set name( "全部加入" );
回复:递归打开多个数据文件CH场,
我正在做类似的事情,我想一次只打开一个文件,然后将其连接到前一个文件的底部。
由于我正在处理的文件数量太多,打开所有文件然后将它们一次连接起来的简单方法太混乱了。
附加的脚本允许您选择一个包含 txt 或 csv 文件的目录,然后将它们连接在一起,一次一个。
如果所有文件不能同时装入内存,这会有所帮助。
-B
回复:递归打开多个数据文件我应该说“来自 MPB”。谢谢 MPB。如果您有时间的话,我还有一个问题要问您。
回复:递归打开多个数据文件我加了“\”
谢谢!
现在我正在尝试将它们全部连接起来。
我发现 MJB 的一篇帖子非常有帮助。
他发布了一种方法来执行此操作,但使用 JOIN 并且仅使用 JMP 文件。
我添加了导入例程和“打开预览”选项。
我需要打开第一个文件,然后设置循环来打开其他文件
并将它们与第一个连接起来。
它仍然不太有效,但我已经很接近了。
回复:递归打开多个数据文件您的路径变量不以斜杠结尾,因此生成的文件名将失败。
要使其递归并具有正确的文件名:
path = "C:\charlie\data\data1\";
file_list = Files In Directory(path, recursive);
for(i = 1, i <= N Items(file_list), i++,
print(path || file_list);
);
您可以根据需要修改打印语句。