"텍스트 파일 저장" 문제안녕하세요 여러분,
Mac OS에서 제대로 작동하는 동안 Windows에서 작업할 수 없었던 스크립트에서 지난 며칠 동안 내 (마지막 몇 가지) 머리카락을 찢어 버렸습니다. 많은 비교 끝에 텍스트 파일이 생성되는 방식의 차이 때문임을 해명했습니다. 이 파일은 JSL 기능 "프로그램 실행"을 사용하여 JMP 내에서 실행하는 다른 프로그램에 대한 입력으로 사용되기 때문에 생성해야 합니다. 이것은 모두 Mac에서 잘 작동합니다. 텍스트 파일을 생성하는 초기 코드는 다음과 같습니다.
filename = Eval Insert( "^simdir^^lakename^/^lakename^.par" );
lakepar = Eval Insert(
"\[{
"Input" : {
"Initial conditions" : "^simdir^^lakename^/icond.dat",
"Grid" : 24,
"Morphology" : "^simdir^^lakename^/hypso.dat",
"Forcing" : "^simdir^^lakename^/forcing.dat",
"Absorption" : "^simdir^^lakename^/lightextinction.dat",
"Inflow" : "^simdir^^lakename^/Qin.dat",
"Outflow" : "^simdir^^lakename^/Qout.dat",
"Inflow temperature" : "^simdir^^lakename^/Tin.dat",
"Inflow salinity" : "^simdir^^lakename^/Sin.dat"
},
.
.
.
.
}
}
]\"
);
Save Text File( filename, lakepar, "replace" );
Mac OS에서 출력 텍스트 파일은 다음과 같이 깔끔하게 정리되어 있습니다.
{
"Input" : {
"Initial conditions" : "/Users/yvesprairie/Dropbox/sim3/Petit-Saut/icond.dat",
"Grid" : 24,
"Morphology" : "/Users/yvesprairie/Dropbox/sim3/Petit-Saut/hypso.dat",
"Forcing" : "/Users/yvesprairie/Dropbox/sim3/Petit-Saut/forcing.dat",
"Absorption" : "/Users/yvesprairie/Dropbox/sim3/Petit-Saut/lightextinction.dat",
"Inflow" : "/Users/yvesprairie/Dropbox/sim3/Petit-Saut/Qin.dat",
"Outflow" : "/Users/yvesprairie/Dropbox/sim3/Petit-Saut/Qout.dat",
"Inflow temperature" : "/Users/yvesprairie/Dropbox/sim3/Petit-Saut/Tin.dat",
"Inflow salinity" : "/Users/yvesprairie/Dropbox/sim3/Petit-Saut/Sin.dat"
},그러나 Windows에서는 모두 길고 연속적으로 줄바꿈하는 것과 같습니다. 이상하게도 괜찮아 보이기 때문에 여기에 붙여넣기조차 할 수 없지만 Atom과 같은 텍스트 편집기에서 열면 파일이 매우 다르게 보입니다. 이 차이로 인해 "프로그램 실행" 실행 파일에서 파일을 읽을 수 없습니다. 숨겨진 문자와 관련이 있다고 생각했지만 Mac 및 Windows 버전 모두 내 기본 설정에서 정확히 동일한 "텍스트 파일 저장" 옵션(CR+LF 및 필드 끝으로 쉼표)을 사용하고 텍스트 파일을 유니코드로 저장하는 옵션. 무엇을 더 시도해야할지 모르겠습니다. 어떤 도움이나 제안이라도 대단히 감사하겠습니다.
안부 인사, 이브
Re: "텍스트 파일 저장" 문제귀하의 솔루션은 매력처럼 작동했습니다. 다시 한 번 대단히 감사합니다! 이브
Re: "텍스트 파일 저장" 문제자세한 설명을 해주신 Craige님께 정말 감사드립니다. 나는 그들을 시도하고보고 할 것입니다! 다시 한 번 감사드립니다, 이브
Re: "텍스트 파일 저장" 문제Mac과 Win(및 Linux)은 줄 바꿈이 사용되는 방식에 대해 이상하고 다른 역사를 가지고 있습니다. 여기에는 다음과 같은 여러 가지 일이 발생합니다.
- 당신은 당신의 문자열에 줄 바꿈 시퀀스를 넣고 있습니다. Win과 Mac 간에 다를 수 있습니다.
- SaveTextFile은 개행에서 일부 호스트 특정 변환을 수행할 수 있습니다. 다를 수 있습니다...
- 다른 편집기는 개행 시퀀스를 다르게 처리할 수 있습니다. 다를 수 있습니다...
JMP는 처음 두 문자를 제어할 수 있으며 대부분의 경우 편집자에게 적합한 줄 바꿈 문자 집합을 찾을 수 있습니다.
개행 시퀀스를 설정하려면 다음 중 하나를 시도하여 CR 및 LF 시퀀스를 예측 가능한 시퀀스로 바꾸십시오.
lakepar = regex(lakepar,"[\n\r]+","\!n",GLOBALREPLACE);
// or
lakepar = regex(lakepar,"[\n\r]+","\!r",GLOBALREPLACE);
// or
lakepar = regex(lakepar,"[\n\r]+","\!r\!n",GLOBALREPLACE);
LF, CR 또는 CRLF는 개행 시퀀스의 일반적인 가능성입니다.
savetextfile이 개행 시퀀스를 호스트에 필요하다고 생각하는 것으로 변환하지 않도록 하려면 Blob을 저장합니다.
saveTextFile( "$desktop/x.txt", chartoblob(lakepar) );
문자열이나 파일을 살펴보려면 Blob을 사용하세요.
show(chartoblob(lakepar));
// or
show(loadtextfile( "$desktop/x.txt", blob));// to view
Load Text File("$desktop/x.txt", blob) = Char To Blob( "abc~0D~0Adef~0D~0Aghiu", "ascii~hex" );
~0D는 CR이고 ~0A는 LF입니다.
Re: "텍스트 파일 저장" 문제원하는 위치에 New Line 문자를 입력해야 합니다.Windows에서 새 줄 문자 시퀀스는 \!n입니다.