2016-09-15 5 views
0

私は現時点でRapidMinerを使用していますが、xthonファイル内のRapidMiner結果をtxtファイルにコピーして、さらに処理する必要があります。私は列A(A1〜A1500)と列Cのファイル名(C1〜C1500)にプレーンテキストを持っています。 私の質問: 列Aのすべてのセルの内容を読み取り、これを対応する列Cで指定されたファイル名で新しい作成されたtxtファイルに印刷する可能性はありますか(xlrdモジュールを考えていますか)?私は、現時点では失われたビットをしています前に、私はxlrdモジュールで働いたことはないとしてExcelセルを読み込んでコンテンツをtxtファイルにコピー

...

答えて

3

.xlsxの処理に関するすべての作業に対してopenpyxlをお勧めします。あなたの要件については

:最終的なコードを@corinnaする

from openpyxl import * 
import os  

p = 'path/to/the/folder/with/your/.xlsx' 
files = [_ for _ in os.listdir(p) if _.endswith('.xlsx')] 

for f in files: 

    wb = load_workbook(os.path.join(p, f)) 
    ws = wb['name_of_sheet'] 
    for row in ws.rows: 
     with open(row[2].value+'.txt', 'w') as outfile: 
       outfile.write(row[0].value) 
+0

ご協力ありがとうございます。これは完璧に機能します!おそらくもう一つのこと。同じ構造を持つ複数のExcelファイルを含むディレクトリがあると仮定すると、os.chdirとforループを使用してすべてのExcelファイルを繰り返し処理し、すべてのmyディレクトリを含む特定のディレクトリに出力ファイルをリダイレクトします最後にtxtファイル? –

+0

投稿を編集していただきありがとうございます。 Excelファイルと同じディレクトリに出力を得るために、os.chdir(r "F:\ Results")だけを追加しました。 –

0

良い一日!だから、私はあなたの質問を正しく理解しているかどうかはわかりませんが、Excelの演算子とループの例演算子を組み合わせて試してみましたか?ループのサブプロセスは、Write CSV演算子などを使用できます。

+0

良いアイデア。 RMでこの作業をすることを考えなかった。しかし、outoutファイルに入力ファイルと同じ名前を割り当てることは可能ですか? –

0

おかげである:

from openpyxl import * 
import os 


p = r'F:\Results' 
files = [_ for _ in os.listdir(p) if _ .endswith('.xlsx')] 
os.chdir(r"F:\Results") 
for f in files: 

    file_location = load_workbook(os.path.join(p, f)) 
    sheet = file_location['Normal'] 
    for row in sheet.rows: 
     with open(row[2].value + '.txt', "w") as outfile: 
      outfile.write(row[0].value) 
関連する問題