2012-01-25 36 views
5

私はデスクトップをクリーンアップし、ファイルタイプに基づいてファイルを移動するスクリプトを作成しています。最初のステップは、それはls -1 /Users/user/Desktop(私はMac OSX上にある)になりそうです。だから、Pythonを使用して、私はどのようにコマンドを実行し、特定のディレクトリにあるファイルに出力を書きますか?これは文書化されていないので、唯一のユーザーになるので、os.system()を使用する場合は気にしない(好む?)ファイルにコマンドライン出力を書き込む

+0

どのファイルを移動しますか? Pythonを使用したファイル操作については、http://docs.python.org/library/shutil.htmlを参照してください。 –

+0

シェルスクリプトで十分です –

+1

シェルスクリプトを使用する場合は、パイプとリダイレクトについての詳細を参照してください。 –

答えて

13

コマンドで>を使用すると、標準出力を任意のファイルにリダイレクトできます。あなたがlsコマンドを使用するのではなく、その後のpythonを使用している場合のpythonを使用して

$ ls /Users/user/Desktop > out.txt 

os.system('ls /Users/user/Desktop > out.txt') 

ただし、ディレクトリ内のすべてのファイルを一覧表示するos.listdirを使用することができます。シェルコマンドを実行し、check_output方法でsubprocessモジュールを使用することができ、出力を得るために、Pythonドキュメントをスキミングした後

path = '/Users/user/Desktop' 
files = os.listdir(path) 
print files 
+0

いいです。ありがとうございました。 – Daniel

+0

ImportError:システムという名前のモジュールがありません。 –

+0

@ Suda.neseどのようにインポートしようとしていますか?あなたのPythonバージョンは何ですか? – taskinoor

4

その後、標準のPython IO関数(File IO in python)を使用して、その出力をファイルに簡単に書き込むことができます。

1

ファイルを開くには、f = open(/Path/To/File)コマンドを使用できます。構文はf = open('/Path/To/File', 'type')です。ここで、 'type'は読み込み用にw、書き込み用にw、追加用にaです。これを行うコマンドはf.read()f.write('content_to_write')です。コマンドラインコマンドから出力を得るには、os.system()の代わりにpopenとsubprocessを使用する必要があります。 os.system()は値を返しません。 popen hereで詳しく読むことができます。

関連する問題