在Python中以CSV格式编写文件夹中的文件名

时间:2017-11-16 12:01:57

标签: python csv

我想在CSV文件中写入特定文件夹的文件名(以便批量上传到Internet存档)。 CSV必须以规定的格式写入。

我尝试过以下代码:

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列?

  • 如何在中添加字符串(例如opensourcewriter.writerow([os.path.basename(dirpath)] + filenames)以便 creator列包含该字符串?

2 个答案:

答案 0 :(得分: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','',''])

答案 1 :(得分:0)

from PIL import Image
import csv
data=[]
with open('images.csv', 'w', newline='') as writeFile:
    writer = csv.writer(writeFile)
    for filename in os.listdir("ahmad"):
        data.append(filename)
        writer.writerow(data)
        data=[]
writeFile.close()