Python覆盖文件而不是附加

时间:2015-08-29 16:49:06

标签: python

我正在创建一个个人电视节目和电影数据库,我使用Python来获取电视节目和电影的信息。我有一个文件来获取文件夹中的电影信息,这很好。

我还有一个Python文件,可以获取电视节目的信息(这是一个文件夹,例如Game of Thrones),它还可以从文件夹中获取所有剧集文件并获取这些文件的信息(它& #39;格式如下:例如Game of Thrones;3;9

所有这些信息都存储在MySQL可以阅读的2个文本文件中:tvshows.txtepisodes.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()

第二部分仅运行一次,我在tv文件夹(Game of ThronesBreaking BadThe Walking Dead内有3个文件夹,这些文件中有一个来自系列(Game of Thrones;3;4Breaking Bad;1;1The Walking Dead;3;4)。

在添加' seriesID'之前,这工作正常。并更改了文件(在我为每个文件夹创建一个文本文件之前,因为我有一个每个电视节目的表格所需的文件)。

episodes.txt中,“权力的游戏”的信息是唯一出现的信息。我删除了“权力的游戏”文件夹,看起来最后一个要搜索的是唯一添加的文件夹。它似乎在覆盖它?

感谢。

2 个答案:

答案 0 :(得分:2)

更改此行:

f = open(fileP, "w")

对此:

f = open(fileP, "a")

答案 1 :(得分:1)

您需要使用'a'而不是'w'打开文件:

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

您可以在https://docs.python.org/2/library/functions.html#open的文档中找到更多详细信息。