[英]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)
您的幫助將不勝感激,如果問題仍然令人困惑,請告訴我,我將嘗試更詳細地解釋。
以下方法應該可以幫助您入門:
file_url
包含input
,請使用input
等的子文件夾。output_root
和子文件夾名稱創建一個文件夾。Counter
來跟蹤每個子文件夾的使用次數。requests
庫從網站下載文本文件。腳本如下:
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.