HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0623
山田CSVでフォルダ作成、画像ダウンロードしたい11解決


山田

リンク

2014/6/23(Mon) 18:57:40|NO.62581

いつも大変お世話になっております。

CSVファイルの情報でフォルダを作って、アドレスから画像をダウンロードするにはどうすれば良いのでしょうか?

CSVファイルには
フォルダ名1,http://abc.cm/001.jpg,http://abc.cm/002.jpg,http://abc.cm/003.jpg
フォルダ名2,http://abc.cm/011.jpg,http://abc.cm/012.jpg,http://abc.cm/013.jpg

のような感じの情報が入る予定です。約2000行ぐらい

どうぞよろしくお願いします。



この記事に返信する


山田

リンク

2014/6/23(Mon) 20:28:18|NO.62585

直接指定して画像をDL出来るようにはなりました

CSVの情報から次々と自動で取り込むようにするにはどうしたら良いでしょうか?

どうぞよろしくお願いします。




#include "hspinet.as" dirlist s, "Q-3146", 5 if stat = 0 { exist "Q-3146" if strsize = -1 { mkdir "Q-3146" mes "作成完了" } else { mes "すでにフォルダは存在します" } } else { mes "すでにfolderが存在します" } netinit neturl "http://www.militaryshop.jp/upload/save_image/Q-3146/" chdir "Q:\\Q-3146" netload "Q-3146_01.JPG" picload "Q-3146_01.JPG" netload "Q-3146_02.JPG" picload "Q-3146_02.JPG" netload "Q-3146_03.JPG" picload "Q-3146_03.JPG" end <>



たんす

リンク

2014/6/23(Mon) 21:48:29|NO.62588

notesel関係(文字列を一行ずつ扱う)と
csvstr(csvを配列に変換する)と
getpath(パス情報の変換?)で出来そうですね。

・一行ずつ取り出す。
・配列に変換する。
・要素0をフォルダ情報として処理。
・要素1以降をパスとファイル名に分離してダウンロード処理。



山田

リンク

2014/6/24(Tue) 01:29:03|NO.62590

たんす様

どうもありがとうございます

notesel関係(文字列を一行ずつ扱う)と
csvstr(csvを配列に変換する)と
getpath(パス情報の変換?)で出来そうですね。

参考にしてサンプルなどをDLして試しているのですが、どうもうまく行きません。

実際のCSVですが、

1900,A-641,メディカルバッグ コットン,1,25000,"メディカルバッグ
 米軍放出品、中古
 古いコットン製"

このように”で囲まれた改行が含まれているのです。

, で区切って一個一個取り出す方法を教えて頂けないでしょうか?

一行に5個の情報が入っております。
//商品ID,商品コード,商品名,在庫数,販売価格,詳細
行数は1800ぐらいです

1.商品IDは使わない
2.商品コードでフォルダを作って
その商品コードの画像をDLする
3.商品名と販売価格と詳細を一つのテキストに収納したい。

どうぞよろしくお願いします。



fortunehill

リンク

2014/6/24(Tue) 03:00:39|NO.62591


notesel data ; noteload "data.csv" ;⓪想定ファイル名 data = "1900,A-641,メディカルバッグ コットン,1,25000,\"メディカルバッグ 米軍放出品、中古 古いコットン製\"" repeat notemax noteget ss,cnt split ss,",",ss mes "mkdir " +dir_cur+"\\"+ss(1) ;①フォルダーを作る(カレントの下に) mes "picload \""+dir_cur+"\\"+ss(2)+"\"" ;②画像を読み込む(DLするにはURLが必要) strrep ss(5),"\"","" ;③不要なダブルクオーテーションの削除 mes ss(2)+" "+ss(4)+" "+ss(5) ;④詳細(スペース区切り) loop



山田

リンク

2014/6/24(Tue) 04:40:59|NO.62592

fortunehill様

ソースありがとうございますm(_ _)m
早速ヒントに従って当てはめたいと思います。

どうもありがとうございます



山田

リンク

2014/6/24(Tue) 05:12:16|NO.62593

fortunehill様

詳細をテキストファイルに書き出すにはどうしたら良いのでしょうか?

下記のようにしたところ、全てのデータが書き込まれてしまいました。

すみませんが、よろしくお願いします。


notesel data noteload "商品0.csv" ;⓪想定ファイル名 ; data = "1900,A-641,メディカルバッグ コットン,1,25000,\"メディカルバッグ 米軍放出品、中古 古いコットン製\"" repeat notemax noteget ss,cnt split ss,",",ss mes "mkdir " +dir_cur+"\\"+ss(1) ;①フォルダーを作る(カレントの下に) mes "picload \""+dir_cur+"\\"+ss(2)+"\"" ;②画像を読み込む(DLするにはURLが必要) strrep ss(5),"\"","" ;③不要なダブルクオーテーションの削除 mes ss(2)+" "+ss(4)+" "+ss(5) ;④詳細(スペース区切り) syousai = ss(5) noteadd syousai notesave ss(1)+".txt" loop



山田

リンク

2014/6/24(Tue) 10:49:16|NO.62596

データに改行コードが入っているので、
せっかく教えて頂いたコードではうまくいきませんでした。

まずは詳細だけをテキストに保存したいのです。

そこで下記のようにしたのですが、正常なデータを保存ができません。
notesel やnoteaddはどう使うのでしょうか?サンプルやヘルプを見てもうまくいきませんでした。

テスト用のデータはコチラにUPしました。
http://nangoku.hustle.ne.jp/TEST.csv

どうか教えてください、よろしくお願いします。


#include "hspda.as" screen 0, ginfo(20), ginfo(21) width 400, 1300 //dialog "", 16, "" // ファイルの選択(CSVファイルを選択) //filename = refstr //filename ="商品3.csv" filename ="TEST.csv" //テスト用 sdim buf, 0xffff // ファイルの内容を格納 sdim _line, 0xfff // 1行分の文字列を格納 sdim tmp, 0xfff // 一時的に使用 len = 0 // 取得した行数 notesel buf // メモリノートパッドの初期化 noteload filename // ファイルの読み込み sdim records, 0xfff, notemax // CSVの行数分メモリを確保 // メインループ repeat notemax noteget _line, cnt // 1行取得 // 1行分をメモリノートパッド形式でCSVに変換し、 // records.cntに保存 csvnote tmp, _line records.cnt = tmp len++ // 行数インクリメント loop // 表示テスト。records配列をrepeatで回し、strtrimで「"」をトリミングして表示 for i, 0, len, 1 //if 詳細フラグ=0{ mes "【" + (i + 1) + "行目】"} notesel records.i repeat notemax noteget _line, cnt データ=strtrim(_line, 0, '"')//変数「データ」に取り出した文字を代入 if データ="[END]" {//1商品の終わりをチェック mes "":詳細フラグ=0:notesave 商品ID+".txt" goto *end2 } if (cnt + 1)=4 { 詳細フラグ=1 }//商品詳細フラグを立てる if 詳細フラグ=1 {//商品詳細である mes "詳細:"+データ notesel buf noteadd データ } if 詳細フラグ=0 {//詳細ではない if (cnt + 1)=1 { 商品ID=データ : mes "商品ID:"+データ} if (cnt + 1)=2 { 商品名=データ : mes "商品名:"+データ} if (cnt + 1)=3 { 価格=データ : mes "価格:"+データ} } *end2 loop next stop



あり

リンク

2014/6/24(Tue) 12:51:17|NO.62597

こんな感じで余分な改行を消したデータが作れるので
あとは応用で。

notesel csv noteload "TEST.csv" strrep csv, "\n", "" strrep csv,",[END]","\n" mes csv notesave "csv_fix.csv"



山田

リンク

2014/6/24(Tue) 15:07:31|NO.62598

あり様

こんにちは、いつもありがとうございます。

ソースありがとうございます
早速使ってクリーンなCSVが出来上がりました
ビックリです。
どうもありがとうございますm(_ _)m



たんす

リンク

2014/6/24(Tue) 19:35:26|NO.62599

最初と状況が違うようですが、作ってみました。
#include "hspda.as"
screen 0, ginfo(20), ginfo(21) width 800, 1300 //変数初期化 #enum e_商品ID 0 ;#enum e_商品コード #enum e_商品名 ;#enum e_在庫数 #enum e_販売価格 #enum e_詳細 #enum e_max sdim buf, 0xffff // ファイルの内容を格納 sdim _line, 0xfff // 1行分の文字列を格納 sdim tmp, 0xfff // 一時的に使用 len = 0 // 取得した行数 sdim tag //tag="商品ID","商品コード","商品名","在庫数","販売価格","詳細" tag="商品ID","商品名","販売価格","詳細"//項目数が少なかったので変更版。 //ファイル選択 dialog "csv", 16, "" // ファイルの選択(CSVファイルを選択) if stat!1:end//キャンセルしたら終了 filename = refstr//ファイル名を保持 //ファイル読み込み notesel buf // メモリノートパッドの初期化 noteload filename // ファイルの読み込み //データ補正 strrep buf, "\n", ""//データ中の改行を削除 strrep buf,",[END]","\n"//データ終了区切り[END]を改行に変更 strrep buf,"\"",""//"を削除 sdim records, 0xfff, e_max // CSVの項目数分メモリを確保 // メインループ repeat notemax wait 1 noteget _line,cnt //csvから1行取得 csvstr records,_line //records配列に分割 repeat e_max //項目数分 繰り返す // if cnt=e_詳細:continue //詳細をスキップ mes ""+tag.cnt+":"+records.cnt //表示 loop mes //改行でスペース空け loop stop



山田

リンク

2014/6/25(Wed) 00:01:50|NO.62607

たんす様
あらたにソースをありがとうございました
早速使って見ます、本当にみなさまどうもありがとうございました。
これからもよろしくお願いします。



ONION software Copyright 1997-2025(c) All rights reserved.