首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python从CSV中的文件夹中写入文件名

用Python从CSV中的文件夹中写入文件名
EN

Stack Overflow用户
提问于 2017-11-16 12:01:56
回答 2查看 7.7K关注 0票数 0

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

我尝试了以下代码:

代码语言:javascript
复制
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列中只打印文件名(去掉扩展名部分)?
  • 如何将字符串(例如opensource)添加到 writer.writerow([os.path.basename(dirpath)] + filenames)所以 creator列包含该字符串?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-16 12:42:53

对于简单的CSV编写器,您必须提供每个字段(实际上已经对标题行这样做了)。这有点繁琐,您可能需要考虑使用更易于处理/理解的DictWriter

代码语言:javascript
复制
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','',''])
票数 2
EN

Stack Overflow用户

发布于 2019-09-28 16:24:34

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47329168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档