如何将文件读入列表

时间:2018-07-06 14:59:20

标签: python string python-3.x list file

我有一个像这样的文本文件

moviefiles.txt
  

['/ home / share / Wallpaper / Hymnfortheweekend(remix).mp4','/ home / share / Wallpaper / mrkittengrove.mp4','/ home / share / Wallpaper / lovelyrabbitandstarycat.mp4','/ home / share / Wallpaper / candygirl(tsar_remix).mp4','/ home / share / Wallpaper / ninelie.mp4','/ home / share / Wallpaper / allweknow.mp4','/ home / share / Wallpaper / Nanamori.mp4' ,“ / home / share / Wallpaper / Fragments.mp4”,“ / home / share / Wallpaper / alter.mp4”,“ / home / share / Wallpaper / memsofyou.mp4”,“ / home / share / Wallpaper / luvletter”。 mp4”,“ / home / share / Wallpaper / atthedge.mp4”,“ / home / share / Wallpaper / lifeline.mp4”,“ / home / share / Wallpaper / power.mp4”,“ / home / share / Wallpaper / yiran.mp4','/ home / share / Wallpaper / iknewyouwereintroubl.mp4','/ home / share / Wallpaper / lookwhatyoumademedo.mp4','/ home / share / Wallpaper / continue.mp4','/ home / share / Wallpaper / newlife.mp4','/ home / share / Wallpaper / alone.mp4','/ home / share / Wallpaper / withoutyou.mp4','/ home / share / Wallpaper / lifeline1.mp4','/ home /分享/壁纸/movingon.mp4']


此文件仅包含1行!

我正在尝试读取moviefiles.txt并将其作为列表对象,但出现了这个奇怪的错误

Traceback (most recent call last):
  File "wallpaper.py", line 8, in <module>
    vdlist = eval(vdlist)
  File "<string>", line 0

    ^
SyntaxError: unexpected EOF while parsing

这是我代码的错误部分

movfiles = open("movfiles.txt", "r")
print (movfiles.read())
vdlist=movfiles.read()
vdlist = eval(vdlist)

注意:movfiles.txt被该文件自动修饰

import glob
from tkinter.filedialog import askdirectory
folder = askdirectory()
print (folder)
mp4files=glob.glob(folder+"/*.mp4")
movfiles=glob.glob(folder+"/*.mov")
avifiles=glob.glob(folder+"/*.avi")
flvfiles=glob.glob(folder+"/*.flv")
allvideofiles=mp4files+movfiles+avifiles+flvfiles
print (mp4files)
file = open("movfiles.txt","w")
file.write(str(allvideofiles))
file.close()

有人知道如何解决此错误吗?

2 个答案:

答案 0 :(得分:3)

您正在对文件进行两次读取,这意味着第二次读取将为空。

movfiles = open("movfiles.txt", "r")
print (movfiles.read())
vdlist=movfiles.read() # this is empty.

您应该使用

vdlist=movfiles.read()
print vdlist

相反。

>>> f = open("hi.txt")
>>> f.read()
'hi\n'
>>> f.read()
''

读取使'cursor within the file and without any arguments read'尝试尽可能多地读取,并且第二次读取将在第一次读取结束的地方继续进行,但是在第一次读取之后您已经位于文件末尾。您当然可以像这样进行多次读取:

>>> f = open("hi.txt")
>>> f.read(1)
'h'
>>> f.read()
'i\n'

在这种情况下,第一个只读操作仅将“光标”前进一个字节,因此第二个读操作仍返回一些数据。

您还可以通过使用seek更改光标的位置,这意味着您可以返回文件的开头并再次读取它:

>>> f = open("hi.txt")
>>> f.read()
'hi\n'
>>> f.seek(0)
>>> f.read()
'hi\n'

答案 1 :(得分:1)

movfiles = open("movfiles.txt", "r")#open the file in reading mode
a= (movfiles.readlines())#read all the lines and save in a list where each line is an element
print (a)#print your list

也许我想念我这个问题,我的代码正在运行,但是转换列表元素中的每一行,如果同一行中有更多元素,它将无法正常工作。 如果是这种情况,请告诉我,我将提供替代解决方案