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

Python-从CSV文件创建多个文件夹,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://siteAdres

我想使用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
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)
我想迭代column3,如果它包含“uploads”,那么它应该使用column1中提到的相应jobname创建一个文件夹,然后创建“input”文件夹并在其中创建相应的file.txt文件,如果column3包含“completed”,那么它应该创建“output”文件夹(在输入文件夹旁边的同一jobname文件夹中)然后在其中包含“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)

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

以下方法将帮助您开始:

  • 打开CSV文件并跳过标题行
  • 读取一行,将其拆分为命名列
  • 如果
    文件url
    包含
    输入
    ,请使用
    输入
    子文件夹等
  • 根据
    output\u root
    和子文件夹名称创建文件夹
  • 使用Python
    计数器
    跟踪每个子文件夹的使用次数
  • 将当前子文件夹计数添加到文件夹名称,并创建任何必要的输出文件夹
  • 使用Python
    requests
    库从网站下载文本文件
  • 从URL中提取文件名并使用它来写入文件内容
  • 脚本如下:

        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
    
    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)
    
    注意,您可能需要安装
    请求
    ,这通常可以使用
    pip安装请求
    完成