私は次のコードを持っています。両方のプラットフォームでログファイルを作成しますが、Windowsログファイルに書き出すだけです。事前Unix/Linuxではlogfileに出力を書き出しませんが、Windowsでは
1
A
答えて
3
で
import os
logdir = os.getenv("logs")
logfile = 'script_list.log'
path = (raw_input("Enter dir: "))
if os.name == "posix":
log = open("//".join([logdir,logfile]), 'w')
else:
log = open("\\".join([logdir,logfile]), 'w')
for dirpath, dirname, filenames in os.walk(path):
for filename in [f for f in filenames]:
if os.name == "posix":
log.write(str(dirpath)+ "//" + str(filename) + "\n")
else:
log.write(str(dirpath)+ "\\" + str(filename) + "\n")
print '\nYour logfile ' + logdir + '\\' + logfile + ' has been created'
おかげで私はあなたが、より良い
log=open(os.path.join(logdir, logfile), 'w')
...
for filename in filenames:
log.write(os.path.join(dirpath, filename)+'\n')
かと
if os.name == "posix":
log = open("//".join([logdir,logfile]), 'w')
else :
log = open("\\".join([logdir,logfile]), 'w')
...
for filename in [f for f in filenames]:
if os.name == "posix":
log.write(str(dirpath)+ "//" + str(filename) + "\n")
else:
log.write(str(dirpath)+ "\\" + str(filename) + "\n")
を交換使用することをお勧め
logfilename=os.path.join(logdir, logfile)
log=open(logfilename, 'w')
...
print "Your logfile", logfilename, "has been created."
@Lycha saysとして、ファイルをもう一度閉じてください。だからあなたのコンストラクトは
with open(logfilename, 'w') as log:
...
+0
パーフェクト、これはソートしました。私は2番目の提案を使いました。夢のように働く。みんなありがとう – geekcomputers
0
は、書き込み後のストリームをフラッシュしてください次のようになります。
log.flush()
また、(できれのtry-finally節を使用して)最後に、ファイルを閉じる必要があります。
関連する問題
- 1. は出力できませんDebug.WriteLine(「テスト」)
- 2. はできませんパイプ出力
- 3. ませ書誌出力ん
- 4. Capistranoはdeploy uglify-jsフックの出力を出力しますが、ファイルは書きません
- 5. Windowsコマンドプロンプト(cmd.exe)で出力メッセージをリダイレクトできません
- 6. cmakeの出力をカラーで出力しますが、ファイルには出力しません
- 7. 出力イテレータにコピーできません
- 8. python heapq merge sortが出力ファイルに書き込めません
- 9. 出力を生成できません
- 10. 出力を取得できません
- 11. ob_start()は大きな出力では機能しません
- 12. ファイルに出力するときにPHPのカールはデータをダウンロードできませんが、標準出力に出力するときはOKです
- 13. 出力ファイルを書き込むことができません... pdb visual studio 2010
- 14. tcp_probeモジュールは出力を出力しません
- 15. git statusは出力を出力しません
- 16. Openssl sha256は標準出力を出力しません
- 17. ADB接続エラー:デバッグブリッジを作成できません:adbサーバーを起動できません:adbの出力を検出できません。adb出力
- 18. Android:エラー-1073741819でアプリケーションを書き出せませんでした
- 19. dbms_output.putはデータを出力しません
- 20. Visual Studio出力ファイル '... \ obj \ Debug \ Foo.Bar.dll'に書き込めませんでした。
- 21. ビルド出力にメッセージを出力する(警告ではありません)
- 22. Qtで出力ファイルを開くことができません
- 23. カスタムスラッシュコマンドの出力しか見ることができません
- 24. 出力バッファリング表示ハンドラで出力バッファリングを使用できません
- 25. モバイル(テキストエリア)にプレスを入力して検出できません
- 26. lldbはTLS変数を出力できません
- 27. 多次元配列は値を出力できません
- 28. ubuntu perlはシェル出力を取得できませんか?
- 29. ありFindはファイル名だけを出力し、フルパスは出力しません
- 30. 'adb version'の出力を解析できませんでした
'os.path.join()' –
なぜ '/'の代わりに '//'を使用していますか? '\\'だけをエスケープする必要があります。 "//"は実際には2つの "/"を意味します。 – mgibsonbr
おそらく 'logging'モジュールが役に立ちます... – Gandaro