2016-10-10 21 views
0

CSVファイルの情報を使用して、複数のフォルダ/ディレクトリを作成したい(存在しない場合)。Python - 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に '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) 

、質問はまだ混乱していると私はより詳細に説明しようとするなら、私に知らせてください。

答えて

1

次のアプローチあなたが始めるのに役立つはずですが:

  1. オープンCSVファイルとヘッダー行をスキップします。
  2. 行を読み込み、名前付き列に分割します。
  3. file_url
  4. など、inputのサブフォルダを使用し、inputが含まれている場合は、output_rootに基づいてフォルダとサブフォルダ名を作成します。
  5. Python Counterを使用して、各サブフォルダの使用回数を記録します。
  6. 現在のサブフォルダ数をフォルダ名に追加し、必要な出力フォルダを作成します。
  7. Python requestsライブラリを使用して、Webサイトからテキストファイルをダウンロードします。
  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) 

注意を、あなたは、これは通常pip install requestsを使用して行うことができ、requestsをインストールする必要があります。

関連する問題