首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将文件读入列表

如何将文件读入列表
EN

Stack Overflow用户
提问于 2018-07-06 14:59:20
回答 2查看 59关注 0票数 1

我有这样一个文本文件

代码语言:javascript
复制
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/home/share/Nineelie.mp4’,'/home/share/Wallpaper/allweknow.mp4','/home/share/Wallpaper/Nanamori.mp4','/home/share/Wallpaper/Fragments.mp4',‘/home/股/壁纸/可变纸/mp4’,‘/home/股/壁纸/模软You.mp4’,‘/home/股/壁纸/墙纸/勒夫莱特·mp4’,‘/home/股/壁纸/墙纸/atthedge.mp4’,‘/home/股/股/壁纸/生命线.mp4’,‘/home/share/Wall.mp4’,‘/home/share/yiran.mp4’,'/home/share/Wallpaper/iknewyouwereintroubl.mp4','/home/share/Wallpaper/lookwhatyoumademedo.mp4',‘/home/share/Wall白皮书/NOTUNUUY.mp4’、‘/home/share/Wallpaper/newlife.mp4.mp4’、'/home/share/Wallpaper/alone.mp4‘、’/home/share/Wallpaper/Wallpaper/outoutyou.mp4‘、’/home/share/Wallpaper/Liveine1.mp4‘、'/home/share/Wallpaper/movingon.mp4’。

这个文件中只包括一行!

我试图读取moviefiles.txt并将其作为列表对象,但我得到了一个奇怪的错误

代码语言:javascript
复制
Traceback (most recent call last):
  File "wallpaper.py", line 8, in <module>
    vdlist = eval(vdlist)
  File "<string>", line 0

    ^
SyntaxError: unexpected EOF while parsing

下面是我代码的错误部分

代码语言:javascript
复制
movfiles = open("movfiles.txt", "r")
print (movfiles.read())
vdlist=movfiles.read()
vdlist = eval(vdlist)

NOTE:movfiles.txt是由该文件自动生成的。

代码语言:javascript
复制
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()

有人知道如何修复这个错误吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-06 15:06:15

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

代码语言:javascript
复制
movfiles = open("movfiles.txt", "r")
print (movfiles.read())
vdlist=movfiles.read() # this is empty.

你应该用

代码语言:javascript
复制
vdlist=movfiles.read()
print vdlist

而不是。

代码语言:javascript
复制
>>> f = open("hi.txt")
>>> f.read()
'hi\n'
>>> f.read()
''

read推进光标within the file and without any arguments Read‘尝试尽可能多地读取,在第一次读取结束的地方将继续第二次读取,但在第一次读取之后您已经在文件的末尾。当然,您可以执行如下多次读取:

代码语言:javascript
复制
>>> f = open("hi.txt")
>>> f.read(1)
'h'
>>> f.read()
'i\n'

在这种情况下,第一次读取只使“游标”前进一个字节,因此第二次读取仍然返回一些数据。

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

代码语言:javascript
复制
>>> f = open("hi.txt")
>>> f.read()
'hi\n'
>>> f.seek(0)
>>> f.read()
'hi\n'
票数 3
EN

Stack Overflow用户

发布于 2018-07-06 15:05:02

代码语言:javascript
复制
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

伙计们,也许我错过了这个问题,我的代码正在工作,但是转换列表元素中的每一行,如果在同一行中有更多的元素,它将无法工作。如果是这样的话,请告诉我,我会提供另一种解决方案

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51213110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档