2017-11-16 15 views
0

特定のフォルダのファイル名を(インターネットアーカイブに一括アップロードする目的で)CSVファイルに書きたいと思っています。 CSVは所定の形式で書かれていなければなりません。CSV形式のファイル名をPythonで書き込む

Iは、次のコードを試みた:

import os 
import csv 

path = '/media/sarada/Lectures & Ebooks/Ebooks/03-Bengali Books/18.Darshan' 

with open('/home/sarada/ia_csv.csv', 'wb') as csvfile: 
    writer = csv.writer(csvfile) 
    writer.writerow(['identifier', 'file', 'description', 'subject[0]', 'title', 'creator', 'date', 'collection']) 
    for dirpath, _, filenames in os.walk(path): 
    if filenames: 
     writer.writerow([os.path.basename(dirpath)] + filenames) 

すぐファイル名が行に印刷されている、すなわちそれらはdescriptiontitlecreator等のフィールドをカバーしています。

問題:

  • ファイル名のみfile欄に印字されなければなりません。

  • title列にファイル名のみを印刷する方法(拡張部分を削除する方法)
    creator列は、その文字列が含まれるように
    writer.writerow([os.path.basename(dirpath)] + filenames)内の文字列(例えばopensource)を追加する方法

答えて

1

シンプルなCSVライターの場合は、各フィールドを入力する必要があります(実際にはヘッダー行にこれを既に実行しています)。これはちょっと面倒ですが、DictWriterである の扱いや理解が簡単になると思うかもしれません。

import os 
import csv 

path = 'YOUR_INPUT_DIRECTORY' 

with open('YOUR_OUTPUT_FILE', 'wb') as csvfile: 
    writer = csv.writer(csvfile) 
    writer.writerow(['identifier', 'file', 'description', 'subject[0]', 'title', 'creator', 'date', 'collection']) 
    for root, dirs, files in os.walk(path): 
    for filename in files: 
     writer.writerow(['', os.path.join(root,filename), '','','', 'opensource','','']) 
+0

ありがとうございます! –

関連する問題