웹 API가 zip 파일을 여는 중입니까?안녕 모두,
저는 고객에게 zip 형식의 데이터를 보내는 웹 API에서 데이터를 가져 오는 중입니다. 필자는 아카이브의 XML에서 CSV로 기본값을 변경하는 방법을 알아 냈지만 다운로드 폴더 대신 JMP로 데이터를 가져 오는 문제에 여전히 직면하고 있습니다.
데이터 출처 :
웹 명령은 데이터를 멋지게 다운로드합니다. 그러나 데이터가 웹 API에서 JMP로 이동하는 경우에만 고객에게 정말 유용 할 것입니다. @Craige_Hales Run Program () 및 cURL 경로를 더 자세히 알려줄 수있는 좋은 글이 있습니다.
그러나 나는 아직도 붙어있다. 아마도 Run Program read statement에 대해 더 자세히 알아야하거나 cURL 옵션을 더 이해해야합니다.
/* generating a start time string for query injection */
starttime = "20160418T07:00-0000";
startdatetime = "&startdatetime=" || starttime;
If( starttime == "",startdatetime = "");
/* generating a end time string for query injection */
endtime = "";
enddatetime = "&enddatetime=" || endtime;
If( endtime == "",enddatetime = "");
/* FILENAME */
FILENAME = "CURR_LMP_GRP";
// CAISO (california energy pricing API)
oasis = "http://oasis.caiso.com/oasisapi/";
query = "GroupZip?groupid="|| FILENAME || startdatetime || "&version=1&resultformat=6";
url = oasis || query;
// download the data
web(url);
// the goal is to directly pull the item into JMP
/* RunProgram to pull the table into JMP (taken from a Craig Hales Post) */
If( HostIs("Windows"),
data = RunProgram(
executable( Convert File Path( "$desktop", windows ) || "curl.exe" ),
options( "-k -s --basic " || url ),
readfunction( "blob" )
);
, // else mac version
data = RunProgram(
executable( "/usr/bin/curl" ),
options( {"-k", "-s", "--basic", url} )
, readfunction( "blob" )
);
);
try( dt = open(data, "text"); error="", error=exception_msg; dt=empty() );
show(dt,error);
이 문제에 대한 잠재적 확장 가능성이 있습니다. 고객 리뷰를 위해 amazon의 웹 API를 다룰 수있는 데모 파워를 생각해보십시오. 프로그램 실행 ()과 파이썬 스크립트 트릭을 할 수 있습니다.
- 네이트
재 : 웹 API를 여는 zip 파일?사실 JMP 파일을 만들기 전에 디스크에 쓰는 것을 피하는 것이 내 의도였습니다. 통찰력에 감사드립니다!
재 : 웹 API를 여는 zip 파일?open 할 첫 번째 인수는 일반적으로 파일의 * 이름 * 문자열입니다. 블롭 (blob) 일 때, open은 파일의 * 내용 *처럼 처리하지만 확장자 (.jmp 등)가 없으므로 두 번째 인자가 필요합니다 ( "data", "script"등). ). (내부적으로 열려있는 서브 시스템에 따라 blob을 임시 위치에 쓸 수 있습니다. 원본 스크립트 열기 ( "/ 000000002A75C3D0 /"... 그것이 디스크에 쓰여진 것이 아니라는 것을 알려줍니다. 이것이 당신이 원하는 것입니다.)재 : 웹 API를 여는 zip 파일?다시 한 번 고마워!
다음은 제안 된 항목이 구현 된 전체 JSL 예제입니다.
/* generating a start time string for query injection */
starttime = "20160418T07:00-0000";
startdatetime = "&startdatetime=" || starttime;
If( starttime == "",startdatetime = "");
/* generating a end time string for query injection */
endtime = "";
enddatetime = "&enddatetime=" || endtime;
If( endtime == "",enddatetime = "");
/* FILENAME */
FILENAME = "CURR_LMP_GRP";
// CAISO (california energy pricing API)
oasis = "http://oasis.caiso.com/oasisapi/";
query = "GroupZip?groupid="|| FILENAME || startdatetime || "&version=1&resultformat=6";
url = oasis || query;
//open the zip download which may have multiple files
za = open( url, "zip"); // 2nd zip important!
zaList = za << dir; //get a list of the files in the archive
for( i = n items(zaList), i > 0, i--,
blob = za<<READ></READ>
형식 (blob)을 지정하면 open 명령이 작동하지만 형식 (텍스트)은 작동하지 않는다는 점을 매료시킵니다.
재 : 웹 API를 여는 zip 파일?try(deletefile("$temp/deleteme.zip"));
za = open("$temp/deleteme.zip","zip");
member = za<<WRITE></WRITE>
얼룩이 열립니다. BLOB가없는 경우 charToBlob ()를 사용하십시오.
재 : 웹 API를 여는 zip 파일?다음은 여는 텍스트 파일을 만들지 만보다 나은 방법이 있어야한다고 생각합니다.
Save Text File("$TEMP/" || FILENAME || Char(i) || ".txt",txt);
open("$TEMP/" || FILENAME || Char(i) || ".txt");
- 네이트
재 : 웹 API를 여는 zip 파일?고마워요 크레이그!
그게 저를 거의 모든 곳으로 데려갔습니다. 나는 행운을 빌지 않고 공개 서한에서 인수로서 zip을 시도해 보았다. (기회가 부적절한 경우 또는 문자열 대 그렇지 않은 경우), 예제 코드로 실제로 읽은 데이터를 얻을 수 있었다!
//open the zip download
za = open( url, "zip"); // 2nd zip important!
zaList = za << dir; //get a list of the files in the archive
for( i = n items(zaList), i > 0, i--,
txt = za<<READ></READ>
다음 단계는 txt를 표로 변환하는 것입니다.
재 : 웹 API를 여는 zip 파일?다음과 같이 시도해보십시오.
za = open ( " http://someurl.that.downloads.a.zip ","zip "); // 중요한 두 번째 우편 번호!
쇼 (za << 회원);
txt = za << read ( "member1"); // 위 목록의 이름
za는 스크립팅 색인의 ZipArchive 객체입니다. URL은 .zip으로 끝나지 않을 수도 있지만 zip을 다운로드해야합니다.