複数のデータ ファイルを再帰的に開く<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");
for (i=1, i<=NItems(file_list), i++,
dt =
開ける(
パス ||ファイルリスト、
インポート設定(
行末(CRLF、CR、LF)、
フィールドの終わり( カンマ、その他( "0x7c" ) )、
引用符を削除( 1 )、
アポストロフィを引用符 ( 0 ) として使用します。
ファイル全体をスキャン(1)、
空の列を数値 ( 0 ) として扱います。
ラベル( 1 )、
列名 Start( 1 )、
データ開始( 2 )、
読み取る行(すべて)、
年規則( "20xx" )
)
);
);
Re: 複数のデータ ファイルを再帰的に開くこのスクリプトは、ディレクトリ内のすべてのファイルを開き、いくつかの基準に基づいてそれらをフィルタリングし、すべてのファイルを連結するという点で非常にうまく機能します。
================================================= ================================================= =
パス = "C:\temp\data\";
ファイルリスト = {};
file_list = ディレクトリ内のファイル(パス、再帰);
myFiles = ファイルリスト;
For( i = 1, i <= N Items( file_list ), i++,
If( が含まれる( file_list 、 ".sum" )、
私のファイル= ""
)
);
Final_files = マイファイル;
///////////////////リストの最初のファイルを開く/////////////////////
///////追加のファイルがこれに追加されます///////////
i=1;
dtjoin = オープン(
パス ||最終ファイル、
列(
合格_不合格 = 文字、
パラメータ = 文字、
Data_Value = 数値、
単位 = 文字、
LSL = 数値、
USL = 数値、
注 = キャラクター、
Test_Cond = 文字
)、
インポート設定(
行末(CRLF、CR、LF)、
フィールドの終わり( カンマ、その他( "0x7c" ) )、
引用符を削除( 1 )、
アポストロフィを引用符 ( 0 ) として使用します。
ファイル全体をスキャン(1)、
空の列を数値 ( 0 ) として扱います。
ラベル( 1 )、
列名 Start( 1 )、
データ開始( 2 )、
読み取る行(すべて)、
年規則( "20xx" )
)、
)
<< set name( "Joined1" );
//////////////////////////////////////////////// //////////////////////////
//////////リスト内の残りのファイルを開きます//////////////
//////////////////////////////////////////////// //////////////////////////
i=2;
For( i = 2, i <= N Items( Final_files ), i++,
dt =
開ける(
パス ||最終ファイル、
列(
合格_不合格 = 文字、
パラメータ = 文字、
Data_Value = 数値、
単位 = 文字、
LSL = 数値、
USL = 数値、
注 = キャラクター、
Test_Cond = 文字
)、
インポート設定(
行末(CRLF、CR、LF)、
フィールドの終わり( カンマ、その他( "0x7c" ) )、
引用符を削除( 1 )、
アポストロフィを引用符 ( 0 ) として使用します。
ファイル全体をスキャン(1)、
空の列を数値 ( 0 ) として扱います。
ラベル( 1 )、
列名 Start( 1 )、
データ開始( 2 )、
読み取る行(すべて)、
年規則( "20xx" )
)
);
dtjoin = dtjoin << Concatenate(
デット、
出力テーブル名( "結合" || Char( i ) )、
);
Close(dt, nosave);
Close( "結合" || Char( i - 1 ), nosave );
待機( 0.1 );
); //Forの終わり
dtjoin << set name( "すべて参加済み" );
Re: 複数のデータ ファイルを再帰的に開くCHフィールド、
私も同様のことをしていて、一度に 1 つのファイルだけを開き、それを前のファイルの最後に連結したいと考えていました。
すべてのファイルを開いて一度に結合するという簡単な方法では、作業しているファイルの数が多すぎて面倒でした。
添付のスクリプトを使用すると、txt または csv ファイルが含まれるディレクトリを選択し、それらを一度に 1 つずつ連結します。
これは、すべてのファイルが一度にメモリに収まらない場合にも役立ちます。
-B
Re: 複数のデータ ファイルを再帰的に開く「MPBから」と言うべきです。ありがとうMPB。時間があれば、これらの点に沿って別の質問をさせていただきます。
Re: 複数のデータ ファイルを再帰的に開く「\」を追加しました
ありがとう!
今、それらをすべて連結しようとしています。
非常に役立つ MJB の投稿を見つけました。
彼はこれを行う方法を投稿しましたが、JOIN を使用し、JMP ファイルのみを使用しました。
インポート ルーチンと「プレビューで開く」オプションを追加しました。
最初のファイルを開いてから、他のファイルを開くようにループを設定する必要がありました。
そしてそれらを最初のものと連結します。
まだ完全には機能していませんが、かなり近づいています。
Re: 複数のデータ ファイルを再帰的に開くパス変数がスラッシュで終わっていないため、結果のファイル名は失敗します。
再帰的にして正しいファイル名を付けるには:
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);
);
必要に応じて print ステートメントを変更できます。