将目录中所有文件的名称及其绝对路径写入bash中的csv文件

时间:2018-05-01 18:22:52

标签: bash csv

这比我想象的要难,但我有一个包含.csv格式的~100个数据集的文件夹。

我想创建一个包含以下字段的.csv文件:

  • 第一个字段是文件的名称。例如user_profile.csv
  • 第二个字段是文件的绝对路径,例如/Users/yuqli/project/user_profile.csv

我想用bash命令来做这件事。但到目前为止,我只能做到:

ls >> out.csv

将所有文件名写入txt文件...我看到有些人使用for循环,但操作.csv文件中的行似乎是禁止的,我不知道要放在for循环中的内容......

我最好只使用Python吗?任何帮助表示赞赏...谢谢!

1 个答案:

答案 0 :(得分:0)

感谢上面大师的建议,我想出了这个Python程序,1)提取文件名,2)提取每个文件中的字段名称。欢迎任何评论。谢谢!

import os
import csv
info = {}    # store all information into a Python dictionary
for filename in os.listdir(os.getcwd()):
    with open(filename, newline='') as f:
        reader = csv.reader(f)
        row1 = next(reader)
        info[filename] = row1

path = os.getcwd()
header = 'field, dataset, path'
write_file = "output.csv"
with open(write_file, "w") as output:
    output.write(header + '\n')
    for key, value in info.items():
        for elem in value:
            curr_path = path + key
            line = '{0}, {1}, {2}'.format(elem, key, curr_path)
            output.write(line + '\n')