Python - 从 CSV 文件创建多个文件夹

标签 python csv

我想使用 CSV 文件中的信息创建多个文件夹/目录(如果它们不存在)。

我从 csv 中得到的信息如下:

    Column0 Column1 Column2 Column3
    51  TestName1   0   https://siteAdress//completed/file.txt
    53  TestName2   0   https://siteAdress//completed/file.txt
    67  TestName1   2   https://siteAdress//uploads/file.txt
    68  TestName1   2   https://siteAdress//uploads/file.txt

我想迭代第3列,如果它包含“上传”,那么它应该创建一个具有第1列中提到的相应作业名称的文件夹,然后创建“输入”文件夹并在其中创建相应的file.txt文件,如果第3列包含“已完成” ' 那么它应该创建“输出”文件夹(在输入文件夹旁边的同一作业名文件夹中),然后在其中创建“file.txt”文件。对第 1 列中提到的所有作业执行此操作。

类似这样的事情:

TestName1/input/file.txt
TestName1/output/file.txt
TestName1/output2/file.txt

TestName2/input/file.txt
TestName2/output/file.txt

注意:大多数数据将包含每个作业名称的多个输出文件夹。在这种情况下,它应该创建与 csv 文件中提到的一样多的输出文件夹。

到目前为止,我已经做到了:

import csv, os
#reads from csv file
with open('limitedresult.csv') as csvfile:
    readCSV = csv.reader(csvfile, delimiter = ',')
    for row in readCSV:
        print(row)

非常感谢您的帮助,如果问题仍然令人困惑,请告诉我,我会尝试更详细地解释。

最佳答案

以下方法应该可以帮助您入门:

  1. 打开 CSV 文件并跳过标题行。
  2. 读取一行,并将其拆分为指定的列。
  3. 如果file_url包含input,请使用input的子文件夹等
  4. 根据 output_root 和子文件夹名称创建一个文件夹。
  5. 使用 Python 计数器 跟踪每个子文件夹的使用次数。
  6. 将当前子文件夹计数添加到文件夹名称并创建任何必要的输出文件夹。
  7. 使用 Python requests 库从网站下载文本文件。
  8. 从 URL 中提取文件名并使用它来写入文件内容。

脚本如下:

from collections import Counter
import requests
import csv
import os

output_root = r'/myroot'
output_counter = Counter()

with open('limitedresult.csv', newline='') as csvfile:
    readCSV = csv.reader(csvfile)
    header = next(readCSV)

    for number, test, col2, file_url in readCSV:
        if 'completed' in file_url:
            sub_folder = 'input'
        elif 'uploads' in file_url:
            sub_folder = 'output' 
        else:
            sub_folder = None
            print('Invalid URL -', file_url)

        if sub_folder:
            output_folder = os.path.join(output_root, test, sub_folder)
            output_counter.update([output_folder])
            output_folder += str(output_counter[output_folder])
            os.makedirs(output_folder, exist_ok=True)
            data = requests.get(file_url)
            file_name = os.path.split(file_url)[1]

            with open(os.path.join(output_folder, file_name), 'w') as f_output:
                f_output.write(data.text)

请注意,您可能需要安装requests,这通常可以使用pip install requests来完成。

关于Python - 从 CSV 文件创建多个文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39951684/

相关文章:

Python 字符串格式化和 UUID

ios - 如何生成 CSV 文件?

python - 在分隔符为 ","的 numpy 中读取 CSV 文件

python - 使用 Pandas Python 将 Dataframe 的列从类型对象转换为 int/float

python - 在 python 中从模板文件和 csv 数据生成输出文件

python - ubuntu/C++ 中的双向管道

python - 从文本文件中检索变量值的最佳方法?

python - 性能: Class Based Views VS Function Based Views

python - 通过 PyFITS/AstroPy 的 FITS 图像中的笛卡尔投影问题

python - 在 Jenkins Docker 中升级 Python