- ベストアンサー
csvファイルを統合する方法
- あるディレクトリ内にある複数のcsvファイルを1つのファイルに統合する方法について説明します。
- 指定したディレクトリ内にあるcsvファイルを1行ずつ読み込み、追加書き出しで1つのファイルに収める方法を解説します。
- Perlを使用して指定したディレクトリ内にあるcsvファイルを統合する方法を説明します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
(MS-DOS 風に書くと) c:\Perl\workdir にあるファイル名を使ってカレントディレクトリのファイルをオープンしようとしてるんだから, ディレクトリ c:\Perl\workdir が (このスクリプトを実行している) カレントディレクトリでなければ正しい動作をしないと判断できる. たとえば ・c:\Perl\workdir には test1.txt, test2.txt がある ・カレントディレクトリには test1.txt はあるが test2.txt はない というような状況であれば 「(カレントディレクトリにある) test1.txt は読み込めるが test2.txt は (カレントディレクトリにはないので) 読み込まない」 ということになる.
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
「対象となるディレクトリ」と「カレントディレクトリ」との関係は? 「ファイル名がきちんと取れていること」は確認できてますか? そして, 「必要なファイル」がオープンできていることも確かめていますか? そもそも何でこんなことを Perl でしている? それなりなコマンドたたくだけではダメなの? 動作には関係ないけど, なんで split してるんだろう. やってることって, 「行末にカンマを追加する」だけだよねぇ....
お礼
すいません、聞かれていることに対してきちんと返答できているか分からないのですが。。。 > 「対象となるディレクトリ」と「カレントディレクトリ」との関係は? コメントに対象となるディレクトリと書いているのは、テキストファイルが保存されているディレクトリのことで、スクリプトを実行するたびに特定のディレクトリ(フォルダ)を指定したいためです。 > 「ファイル名がきちんと取れていること」は確認できてますか? ファイルに書き出しではなく、コンソール画面(コマンドプロンプト)に$fileに入れられた各ファイル名を評させると、きちんと表示されるのでファイル名を取得できていることは間違いなさそうです。 > 「必要なファイル」がオープンできていることも確かめていますか? 少なくともC:/Perl/workdirに保存されている2つのファイルのうち1つはきちんと読み込んで、ファイルへ書き出しもできています。 > そもそも何でこんなことを Perl でしている? これはスクリプトの一部なので、実際にはカンマ区切りのデータを読み込んで、途中で色々とやることがあるからです。
お礼
回答ありがとうございす。 理解できました(^_^;) おっしゃるとおり、カレントディレクトリにtest1.txtだけが置いてありました。私はworkdirにあるtest1.txtが読み込まれたのだと思い込んでしまっていました。workdirにあるファイルを読み込みたければ、カレントディレクトリを先に変更しておかないといけなかったのですね。