2010-05-06 4 views
1

숫자 목록이있는 txt 일반 파일이 있습니다. 같은 줄에 하나 개의 번호 :AppleScript : 목록의 TXT 파일 변환

978-972-722-649-8 
978-972-722-646-7 
978-972-722-627-6 
978-972-722-625-2 
978-972-722-594-1 

이 목록은 파일이라고 file.txt를에, 생성과 서양 (ISO 라틴어 1) 인코딩을 사용하여 텍스트 편집기에 저장되었습니다.

이제 AppleScript를 사용하여이 파일을 읽고 목록으로 변환하려고합니다.

나는이 스크립트를 실행 한 후이 스크립트를

set myDirectory to path to desktop folder as string 
set myFile to myDirectory & "file.txt" 

try 
    set open_file to ¬ 
     open for access file myFile without write permission 
    set myList to read open_file using delimiter return 
    close access open_file 
on error 
    try 
     close access file open_file 
    end try 
end try 

이, myList에 단지 하나의 항목을 포함하고이 항목은 "97"입니다 (I 그 첫 번째 항목의 처음 두 숫자입니다 가정).

무슨 일입니까?

감사합니다.

답변

1

그것은 파일로 벌어지고 뭔가 이상한처럼 들리 겠지만 다른 방법 시도 :

set myfilePPath to posix path of myFile 
set myList to every paragraph of (do shell script("cat \"" & myfilePPath "\")) 

고양이를 프로그램은 파일의 내용을 입력합니다. 나도 작동하지 않습니다, 그것은 당신에게 무슨 일이 일어나고 있는지에 대한 단서를 줄지도 모릅니다.

1

파일을 Western (ISO Latin 1)으로 저장 한 경우 대개 LF가 구분 기호로 사용됩니다.

다음 줄을 사용해보십시오 :

설정으로 myList가 구분 기호를 사용하여 open_file "\ n"

을 읽고 당신을 위해 작동하는지 확인.

내 랩톱에서 스크립트를 실행 해 보았는데 위의 수정 사항과 함께 잘 작동합니다.

또한 od 명령을 쉘에서 실행하여 파일이 올바르게 인코딩되었는지 확인하십시오. 여기 내 명령의 출력은 다음과 같습니다

vlad$ od -c file.txt 
0000000 9 7 8 - 9 7 2 - 7 2 2 - 6 4 9 - 
0000020 8 \n 9 7 8 - 9 7 2 - 7 2 2 - 6 4 
0000040 6 - 7 \n 9 7 8 - 9 7 2 - 7 2 2 - 
0000060 6 2 7 - 6 \n 9 7 8 - 9 7 2 - 7 2 
0000100 2 - 6 2 5 - 2 \n 9 7 8 - 9 7 2 - 
0000120 7 2 2 - 5 9 4 - 1 \n       
0000132 
+0

감사하지만이 구분 기호 "\ n"은 유효하지 않습니다. 구분 기호 줄 바꿈으로 바뀌었지만 문제가 지속됩니다. 나는 od 명령을 실행했고 그것은 당신과 같이 암호화되어 있습니다. – SpaceDog

+0

(계속) ... 다른 유형의 TXT 파일을 사용해 보았습니다. 모든 경우에 최종 목록에는 파일에 들어있는 첫 번째 문자가 하나만 들어 있습니다. 12345 \ n67890 \ n00000 \ n 파일에는 "12"라는 항목이 하나 있습니다. – SpaceDog

+0

어떻게 목록을 확인합니까? 당신은 그것의 코드 발췌 문장을 게시 할 수 있습니까? 거기에 문제가있을 수 있습니다. 예를 들어, – Vlad

1

read 명령의 using delimiter(s) 매개 변수는 문제가있다. 사용하여 모든 줄 바꿈 문자 (들)와 함께 작동하는 대신 다음

set myList to every paragraph of (read open_file) 
+0

감사합니다. 그러나 코드 결과를 사용하여 myList에 단 하나의 항목 만 있으면 해당 항목이 파일에서 읽은 처음 두 문자에 해당됩니다.이 경우 myList에는 79. – SpaceDog

+0

이라는 항목이 하나 있습니다. 문제 야. 나는 당신의 버그를 재현 할 수 없다. file.txt를 만들려고 할 때,이 솔루션은 저에게 효과적이었습니다. 이 파일을 진단하는 데 도움이 될 수있는 정보가 무엇인지 확신 할 수 없습니다. 어딘가에 파일을 게시 한 것일 수 있습니다. –