2016-02-04 11 views
6

私は、テキストファイルへのロギングを、Pythonでhereと表示されている例のように簡単にオン/オフする簡単な方法を見つけようとしています。その解決策は、ログが必要な場合に有効なファイル名を使用し、それ以外の場合はnull device'dev/null'を使用することでした。彼らはリダイレクトを使用していますが、私はfopenを使いたいと思います。Matlabにヌルデバイスがありますか?

次のような何らかの方法がありますか?UnixまたはWindowsシステムの場合はどちらの言葉が問題になりますか。私は変更していたスクリプトは、我々はファイルの一握りのために詳細の細かいレベルをプルアップしたいが、そうでなければ、バッチ処理のためには大きすぎる成長する特定の破壊シナリオで詳細なログを大幅に利益を得ることができる

nullFID = fopen('/dev/nul', 'w') 

スクリプトは通常、対象となります。

答えて

3

このように見える人は、MathWorksに「nullファイル」という同様の用語を使用して回答を投稿しました。それが有効な用語であるかどうかは分かりませんが、 "ヌルデバイスファイル"の短縮形になる可能性があります。

NULLデバイスを参照する方法はOSに依存し...

nullFID = fopen('NUL:' ); % Windows 
nullFID = fopen('/dev/null'); % UNIX 

そしてそれはまた、Matlabのリリースからの基準が変化する表示されます。次のスクリプト

ver 
nullFID = fopen('NUL:' , 'w') 
fprintf(nullFID , '12345') 
nullFID = fopen('NUL:' ) 
fprintf(nullFID , '12345') 
nullFID = fopen('NUL' , 'w') 
nullFID = fopen('NUL') 

とMATLABの2つのバージョンから生成され、次の出力...

R2011b

>> ver 
------------------------------------------------------------------------------------- 
MATLAB Version 7.13.0.564 (R2011b) 
MATLAB License Number: xxxx 
Operating System: Microsoft Windows 7 Version 6.1 (Build 7601: Service Pack 1) 
Java VM Version: Java 1.6.0_17-b04 with Sun Microsystems Inc. Java HotSpot(TM) 64-Bit Server VM mixed mode 
------------------------------------------------------------------------------------- 
MATLAB            Version 7.13  (R2011b) 

>> nullFID = fopen('NUL:' , 'w') 
nullFID = 119 

>> fprintf(nullFID , '12345') 
ans = 5 

>> nullFID = fopen('NUL:') 
nullFID = 120 

>> fprintf(nullFID , '12345') 
ans = 0 

>> nullFID = fopen('NUL' , 'w') 
Warning: You have chosen a reserved DOS device name for your filename. 
Please choose another valid filename 
nullFID = -1 

>> nullFID = fopen('NUL') 
nullFID = -1 

R2015a

>> ver 
---------------------------------------------------------------------------------------------------- 
MATLAB Version: 8.5.0.197613 (R2015a) 
MATLAB License Number: 1093113 
Operating System: Microsoft Windows 7 Professional Version 6.1 (Build 7601: Service Pack 1) 
Java Version: Java 1.7.0_60-b19 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode 
---------------------------------------------------------------------------------------------------- 
MATLAB            Version 8.5  (R2015a) 

>> nullFID = fopen('NUL:' , 'w') 
nullFID = -1 

>> fprintf(nullFID , '12345') 
Error using fprintf 
Invalid file identifier. Use fopen to generate a valid file identifier. 

>> nullFID = fopen('NUL:') 
nullFID = 8 

>> fprintf(nullFID , '12345') 
ans = 0 

>> nullFID = fopen('NUL' , 'w') 
Warning: You have chosen a reserved DOS device name for your filename. 
Please choose another valid filename. 
nullFID = -1 

>> nullFID = fopen('NUL') 
nullFID = -1 
+1

なぜ 'ワットを考えてみましょう「ある場合には、そう?また、最初のものはWindows、2番目のものはLinuxです。 – Daniel

+0

@ダニエル、私は答えを広げ、いくつかの作業シナリオを含める、私は 'w'の役割を確信していない、私は実際にいくつかの場所からコードをコピーし、途中で混乱した。それは必要なようには見えませんが、ファイルIDが神秘的な形で変わるように見えます。 – jxramos

+0

'' w''は、書き込みのためにファイルを開き、既存の内容を破棄します( '' a ''とは異なります)。 nullデバイスの既存のコンテンツを破棄することは意味があるので、それが問題である可能性があります。 –

関連する問題