Python阅读文本文件

时间:2017-11-14 21:26:57

标签: python applescript

我写了一个AppleScript来生成我的itunes库中所有未观看电影的文本文件。以下是该脚本的代码:

tell application "iTunes"
    set watchedEpisodes to tracks of playlist "TV Shows" whose unplayed is false and played count > 0
    set unwatchedEpisodes to tracks of playlist "TV Shows" whose unplayed is true
    if (count unwatchedEpisodes) > 0 then
        set trackNames to {}
        repeat with anEpisode in unwatchedEpisodes
            set tmp to location of anEpisode as text
            set posixtmp to POSIX path of tmp
            set end of trackNames to (posixtmp as text)
        end repeat

        set {TID, AppleScript's text item delimiters} to {AppleScript's text item delimiters, return}

        set unwatchedTVShows to trackNames as text
        do shell script "echo " & quoted form of unwatchedTVShows & " > /Volumes/Data/Media/Kodi/unwatchedTVShows.txt"
        #display dialog trackNames as text
        set AppleScript's text item delimiters to TID
    end if

    set watchedEpisodes to tracks of playlist "Movies" whose unplayed is false and played count > 0
    set unwatchedEpisodes to tracks of playlist "Movies" whose unplayed is true
    if (count unwatchedEpisodes) > 0 then
        set trackNames to {}
        repeat with anEpisode in unwatchedEpisodes
            set tmp to location of anEpisode as text
            set posixtmp to POSIX path of tmp
            set end of trackNames to (posixtmp as text)

        end repeat

        set {TID, AppleScript's text item delimiters} to {AppleScript's text item delimiters, return}

        set unwatchedMovies to trackNames as text
        do shell script "echo " & quoted form of unwatchedMovies & " > /Volumes/Data/Media/Kodi/unwatchedMovies.txt"
        #display dialog trackNames as text
        set AppleScript's text item delimiters to TID
    end if
end tell

这是我的输出文件:

/Volumes/Data/Media/Movies/Thanks For Sharing.m4v
/Volumes/Data/Media/Movies/Thats My Boy.m4v
/Volumes/Data/Media/Movies/Think Like a Man.m4v
/Volumes/Data/Media/Movies/Think Like a Man Too.m4v
/Volumes/Data/Media/Movies/This Means War.m4v
/Volumes/Data/Media/Movies/Top Five.m4v
/Volumes/Data/Media/Movies/Trail of Blood.m4v

我的问题是正在阅读此文件。我需要打开它,并把它放在一个字符串中,以便我可以全面搜索它(即,如果我搜索“像男人一样思考”,我不想在“像男人一样思考”中误报。< / p>

无论如何,这是我当前的python代码(或至少代码片段):

KODIFOLDER="/Volumes/Data/Media/Kodi"
with open(KODIFOLDER + "/unwatchedMovies.txt", 'r') as umovies:
    for line in umovies:
        line = line.strip()
        print line

这是输出:

/Volumes/Data/Media/Movies/Trail of Blood.m4voo.m4v

显然,它正在打开并阅读文件,但我不明白为什么该代码段没有提供文本文件中的完整“列表”。关于我做错了什么的想法?

这是最终答案。不确定与以前有什么不同(混合标签和空格可能??)。无论如何,为了将来参考,这段代码:

with open(KODIFOLDER + "/unwatchedMovies.txt", 'r') as uwmovies:
    for line in uwmovies:
        line = line.replace("\n","")
        unwatchedmovies = line.split('\r')
        print unwatchedmovies

提供此列表的输出:

['/Volumes/Data/Media/Movies/Table 19.m4v', '/Volumes/Data/Media/Movies/Term Life.m4v', '/Volumes/Data/Media/Movies/Thanks For Sharing.m4v', '/Volumes/Data/Media/Movies/Thats My Boy.m4v', '/Volumes/Data/Media/Movies/Think Like a Man.m4v', '/Volumes/Data/Media/Movies/Think Like a Man Too.m4v', '/Volumes/Data/Media/Movies/This Means War.m4v', '/Volumes/Data/Media/Movies/Top Five.m4v', '/Volumes/Data/Media/Movies/Trail of Blood.m4v']

这正是我所需要的。我没有列出“\ r”或“\ n”。谢谢你的帮助!

3 个答案:

答案 0 :(得分:0)

这是您的实际代码段吗?

KODIFOLDER="/Volumes/Data/Media/Kodi"
with open(KODIFOLDER + "/unwatchedMovies.txt", 'r') as umovies:
    for line in umovies:
        line = line.strip()
    print line

这只会打印文件的最后一行。请注意,print line仅缩进一个tab

答案 1 :(得分:0)

尝试在您打开的文件上调用<my-child-cmp (myClick)="firstFunction($event)"></my-child-cmp> firstFunction(event: Event) { console.log(event); // You will see something here)) } ,然后将内容拆分为.read()(换行符)

\n

但这对你的用例来说已经足够了:

KODIFOLDER="/Volumes/Data/Media/Kodi"
with open(KODIFOLDER + "/unwatchedMovies.txt", 'r') as umovies:
    for line in umovies.read().split('\n'):
        line = line.strip()
        print line

答案 2 :(得分:0)

试试这个( Pythonic Way ,UPDATED):

import sys

read_lines = [sys.stdout.write(line.rstrip('\n') + "\n") for line in open('1.txt')]

Python 2x

from __future__ import print_function
read_lines = [print(line.rstrip('\n')) for line in open('1.txt')]