簡體   English   中英

Python - 從 CSV 文件創建多個文件夾

[英]Python - Create multiple folders from CSV file

我想使用 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

我想迭代 column3,如果它包含“上傳”,那么它應該使用 column1 上提到的相應作業名稱創建一個文件夾,然后創建“輸入”文件夾並在其中創建相應的 file.txt 文件,如果 column3 包含“已完成”,則它應該創建“輸出”文件夾(在輸入文件夾旁邊的同一個作業名文件夾中),然后在其中創建“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 Counter來跟蹤每個子文件夾的使用次數。
  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來完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM