2012-04-08 15 views
5

में सूची में टेक्स्टफाइल पढ़ें मैंने एक ऐप्पलस्क्रिप्ट बनाने की कोशिश की जो टेक्स्ट फ़ाइल पढ़ता है और सामग्री को एक सूची में रखता है। फ़ाइल एक साधारण पाठ फ़ाइल है जहां प्रत्येक पंक्ति इस तरह दिखती है: example-"example"एप्पलस्क्रिप्ट

पहला फ़ाइल नाम है और दूसरा फ़ोल्डर नाम है।

set listOfShows to {} 
set theFile to readFile("/Users/anders/Desktop/test.txt") 
set Shows to read theFile using delimiter return 
repeat with nextLine in Shows 
    if length of nextLine is greater than 0 then 
     copy nextLine to the end of listOfShows 
    end if 
end repeat 
choose from list listOfShows 


on readFile(unixPath) 
    set foo to (open for access (POSIX file unixPath)) 
    set txt to (read foo for (get eof foo)) 
    close access foo 
    return txt 
end readFile 

जब मैं चलाने के उत्पादन मैं इस मिल कि:

यहाँ अब मेरे कोड है

error "Can not change \"Game.of.Thrones-\\\"Game Of \" to type file." number -1700 from "Game.of.Thrones-\"Game Of " to file" 

मेरी सूची इस प्रकार है: सिंहासन के Game.of.Thrones- "खेल "और इस तरह दो और लाइनें।

उत्तर

5

त्रुटि है कि आप सामग्री एक फ़ाइल (पहली फ़ाइल आप पढ़ सकते हैं) के रूप में एक फ़ाइल के को पढ़ने के लिए कोशिश कर रहे हैं। अनुच्छेद पाठ के पाठ को वापस/लाइनफीड सीमाओं पर अलग कर दिया जाएगा, जो आम तौर पर यह अनुमान लगाने की कोशिश करने से बेहतर काम करता है कि फ़ाइल में लाइन वर्ण का अंत क्या उपयोग किया जाता है।

तुम भी जब सिर्फ फाइलों को पढ़ने के लिए उपयोग बात के लिए पूरी खुला जरूरत नहीं है, तो अपनी स्क्रिप्ट सिर्फ

set listOfShows to {} 
set Shows to paragraphs of (read POSIX file "/Users/anders/Desktop/test.txt") 
repeat with nextLine in Shows 
    if length of nextLine is greater than 0 then 
     copy nextLine to the end of listOfShows 
    end if 
end repeat 
choose from list listOfShows 
+0

यह अभी भी केवल "खेल पढ़ता रिटर्न .of.Thrones - मेरे आउटपुट में \ "गेम ऑफ", मुझे अब कोई त्रुटि नहीं मिलती है। – andeersg

+0

मैंने पाठ फ़ाइल में 1text, 2text ... 5text के साथ प्रयास किया। परिणाम 1text, 2text, 3text है , 4text, 5. नहीं 5text – andeersg

+0

स्क्रिप्ट को फ़ाइल की प्रत्येक पंक्ति (एक न्यूलाइन कैरेक्टर जैसे रिटर्न) से अलग किया जाता है और इसे एक सूची में डालता है - वें नहीं आपने क्या पूछा निश्चित नहीं है कि फ़ाइल पूरी तरह से क्यों नहीं पढ़ी जाएगी, जब तक कि आप एक सादा पठन कमांड का उपयोग नहीं कर रहे हैं और delimiters के साथ खेल रहे हैं या वर्णों की संख्या के साथ खेल रहे हैं। –

2

read को कम किया जा सकता है, डिफ़ॉल्ट रूप से MacRoman का उपयोग करता है तो यह ऊपर गैर jumbles यूटीएफ -8 फाइलों में ASCII वर्ण जब तक आप as «class utf8» जोड़ते हैं। (as Unicode text UTF-16 है।)

paragraphs of (read POSIX file "/tmp/test.txt") as «class utf8» 

paragraphs of भी CRLF और सीआर लाइन अंत के साथ काम करता है। यह नहीं करता है, लेकिन यदि वह रिक्त हो यह अंतिम पंक्ति पर ध्यान नहीं देता:

read POSIX file "/tmp/test.txt" as «class utf8» using delimiter linefeed 
0

AppleScript के भाषा संदर्भ पेज 120 पर राज्यों:

तुरंत समाप्त होने के बाद पहला वर्ण या तो बाद शुरू पात्रों की एक श्रृंखला पिछले अनुच्छेद या पाठ की शुरुआत और एक कैरिज रिटर्न कैरेक्टर (\ r), एक लाइनफीड वर्ण (\ n), एक रिटर्न/लाइनफीड जोड़ी (\ r \ n), या पाठ के अंत के साथ समाप्त होता है। यूनिकोड "अनुच्छेद विभाजक" वर्ण (यू + 2029) समर्थित नहीं है।

तो, U + 8232 नजरअंदाज कर दिया है और AppleScript फ़ाइल से पूरे पाठ ...

U + 8232 सीआर चरित्र के रूप में TextEdit में प्रयोग किया जाता है ...

1
set milefile to ((path to desktop as text) & "Alert.txt") 
set theFileContents to (read file milefile) 
display dialog theFileContents 
+0

हालांकि यह कोड प्रश्न का उत्तर दे सकता है, _why_ और/या _how_ के बारे में अतिरिक्त संदर्भ का उत्तर देता है, यह प्रश्न इसके दीर्घकालिक मान में काफी सुधार करेगा। कुछ स्पष्टीकरण जोड़ने के लिए कृपया अपना उत्तर संपादित करें। –

संबंधित मुद्दे