2017-09-07 7 views
-1

私は、整数値の複数の列を持つ大規模なCSVファイルを持っている:CSV列ごとに特定のファイルを生成する方法は?

1122 2222 3333 6664 
4588 2122 5555 7747 
1155 8844 1147 8895 
.... .... .... .... 

私は列ごとに、この形式で特定のファイルを生成します。列1の例があります:

sudo google-chrome -c -a tt1 
sudo google-chrome -a tt1 -d 1122 -u 1122 

sudo google-chrome -c -a tt1 
sudo google-chrome -a tt1 -d 4588 -u 4588 

sudo google-chrome -c -a tt1 
sudo google-chrome -a tt1 -d 1155 -u 1155 

列1の値が終わるまで、特定のファイルに保存します。

すべての列について同じプロセスを繰り返す必要があります。最後に、各列に対応するファイルが 'columnx.sh'の形式で格納されます。

Pythonを使用してこの機能に到達するにはどうすればよいですか?

+1

私はあなたにコードを書くように人々に依頼することはできないと思います... – decadenza

+0

モードでファイルにデータを書き込む方法について学びます。また、ファイルを読み込んでそれにデータを追加してみてください。 –

+0

コードを書くことを頼むのではなく、ちょっとした提案とヒントがほしいと思っているだけです。 – AbouSDN

答えて

0

私は可能な方法について説明します(もちろん多くあります)。私はそれが裸のコードスニペットに比べてより価値があると思う。この例では、ファイルを書き込む前にファイル全体を読み取る際にメモリの制約がないことを前提としています。

モジュールをcsv CSVファイルを操作するための参照モジュールであり、標準のPythonディストリビューションhttp://python.orgから統合されています。

その使い方はあなたに明らかになったら、開いて、ドキュメントサイトでこのPythonの2例で説明したように、CSVファイルを処理するためのコンテキストマネージャとの作業:

>>> import csv 
>>> with open('largefile.csv', 'rb') as csvfile: 
...  spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|') 
...  for row in spamreader: 
...   # Store data in your data structure 

はあなたが指定する必要があります特定のCSVファイルで使用されている区切りパラメータcsv.reader。コンマ、タブ、またはスペースのグループにすることができます。

入力ファイルの各行を読み取るが、読み取り操作の前に準備したデータ構造に各行の各値を格納することができます。あなたのケースでは、リストのリスト、基本的にはマトリックスは、後であなたのデータをシリアル形式で取り出す必要があるので、良い選択です。

list.appendメソッドを使用すると、各行の各項目をリストの末尾にプッシュできます。列ごとに値をスキャンする必要があり、スパム読者が行で動作するのでリストのリストを作成するので、この行列の表を非常に簡単に表現できます。

行列が準備完了したら、おそらくコンテキストマネージャを使用してファイルを書きます。

>>> with open('columnx.sh', 'a') as the_file: 
...  the_file.write('Hello\n') 

これはあなたがすべてのあなたの列のループを可能なfile.write方法の前に、ネストされたforループを挿入する必要がある。この場合https://stackoverflow.com/a/6160082/3789324

で、stackoverflowの上の別の質問からのファイルの書き込みの一例です列のすべての要素

file.write方法は、まず

s1 = "sudo google-chrome -c -a tt1" 

文字列と、その文字列の項目は、あなただけのリストから取得した番号である

s2 = "sudo google-chrome -a tt1 -d item -u item" 

を書くものとします。あなたは、サブストリングにこの方法を数字を連結することができ、文字列内のアイテム数を代入する

s = "sudo google-chrome -a tt1 -d " + str(item) + " -u " + str(item)" 

だから今は、各要素に対して、それぞれ異なる反復でfile.write書き込み方法にS1とS2を渡すことができます

this_file.write(s1 + "\n" + s2 + "\n") 

あなたのコードスニペットがあります。

関連する問題