2015-08-29 4 views
-1

Я создаю персональную телешоу и базу данных фильмов, и я использую Python для получения информации о телешоу и фильмах. У меня есть файл для получения информации о фильмах в папке, которая отлично работает.Переписывающий файл Python вместо добавления

У меня также есть файл Python, который получает информацию о телешоу (это папка, например Game of Thrones), а также получает все файлы эпизодов из папки и получает информацию для них (она отформатирована так: : например Game of Thrones;3;9))

Вся эта информация хранится в 2 текстовых файлах, которые MySQL может читать: tvshows.txt и episodes.txt.

Python легко получает информацию о телешоу в первой части программы.

Вторая часть программы, чтобы получить каждый эпизод в ТВ-шоу папку и хранить информацию в файле (episodes.txt):

def seTv(show): 
    pat = '/home/ryan/python/tv/' 
    pat = pat + show 
    epList = os.listdir(pat) 
    fileP = "/home/ryan/python/tvtext/episodes.txt" 
    f = open(fileP, "w") 
    print epList 
    hdrs = ['Title', 'Plot', 'imdbRating', 'Season', 'Episode', 'seriesID'] 
    def searchTvSe(ep): 
    ep = str(ep) 
    print ep 
    seq = ep.split(";") 
    print seq 
    tit = seq[0] 
    seq[0] = seq[0].replace(" ", "+") 
    url = "http://www.omdbapi.com/?t=%s&Season=%s&Episode=%s&plot=full&r=json" % (seq[0], seq[1], seq[2]) 
    respo = u.urlopen(url) 
    respo = json.loads(str(respo.read())) 
    if not os.path.exists("/var/www/html/images/"+tit): 
     os.makedirs("/var/www/html/images/"+tit) 
    imgNa = "/var/www/html/images/" + tit + "/" + respo["Title"] + ".jpg"; 
    for each in hdrs: 
     #print respo[each] # ==== This checks to see if it is working, it is ===== 
     f.write(respo[each] + "\t") 
     urllib.urlretrieve(respo["Poster"], imgNa) 

    for co, tt in enumerate(epList): 
    f.write("\N \t" + str(co) + "\t") 
    searchTvSe(tt) 
    f.write("\n") 
    f.close() 

fullTv() 

Вторая часть работает только один раз, и у меня есть 3 папки внутри папка tv (Game of Thrones, Breaking Bad, The Walking Dead) и внутри этих файлов - один эпизод из серии (Game of Thrones;3;4, Breaking Bad;1;1, The Walking Dead;3;4).

Это работало отлично, прежде чем я добавил «seriesID» и изменил файлы (до того, как у меня был текстовый файл для каждой папки, который был необходим, поскольку у меня была таблица для каждого ТВ-шоу).

В episodes.txt информация для игры Престолов является единственной, которая появляется. Я удалил папку Game of Thrones, и кажется, что последний, который нужно обыскать, является единственным, который был добавлен. Кажется, это переписывает?

Спасибо.

+2

Вы открываете файл с аргументом '' w'' (переписать или создать). Вероятно, вы должны попробовать '' a'' (добавить в конец) или ' – ForceBru

ответ

2

Изменить эту строку:

f = open(fileP, "w") 

Для этого:

f = open(fileP, "a") 
1

Вам нужно открыть файл с 'a' вместо 'w':

with open('file.txt', 'a') as myfile: 
    myfile.write("Hello world!") 

Более подробную информацию вы найдете в документации по адресу: https://docs.python.org/2/library/functions.html#open.

Смежные вопросы