我想使用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,如果它包含'uploads'那么它应该创建一个文件夹,其中包含column1上提到的相应作业名,然后创建'input'文件夹,并在其中创建相应的file.txt文件,如果column3包含'已完成'然后它应该'输出'文件夹(在输入文件夹旁边的同一个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)
我们非常感谢您的帮助,如果问题仍然令人困惑,请告诉我。我会尝试更详细地解释。
答案 0 :(得分:1)
以下方法可以帮助您入门:
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
完成。