首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从python中的两个不同文件夹创建文本文件

从python中的两个不同文件夹创建文本文件
EN

Stack Overflow用户
提问于 2015-05-04 22:59:17
回答 2查看 58关注 0票数 0

我试图在python中使用两个不同的文件文件夹(到一个文本文件)来编写一个列表;但是,当我运行我的程序时,只有我的第二个文件路径附加到列表中,并出现在我的文本文件中。如何添加列表以便两个文件夹中的文件显示?我认为我的代码在第一步之后正在清空列表。我想保持这两个文件夹分开,不想仅仅为了列表而组合它们。

代码语言:javascript
复制
import os
from os import listdir
from os.path import isfile, join

root = r'C:\GEO\Images\data\data_2008\ims_data_2008'
mylist = [ ]
for path, subdirs, files in os.walk(root):
     for name in files:
          mylist.append(os.path.join(path, name))

roottwo = r'C:\GEO\Images\data\data_2009\ims_data_2009'
mylist = [ ]
for path, subdirs, files in os.walk(roottwo):
     for name in files:
          mylist.append(os.path.join(path, name))

txt = open(r'C:\GEO6973\FinalExam\YoungResults\ims_data_list.txt', 'w')
txt.write('dir' + ',' + 'file' + '\n')
for item in mylist:
     list = mylist.pop(0)
     dir, filename = os.path.basename(os.path.dirname(list)), os.path.basename(list)
     txt.write(dir + ',' + filename + '\n')

with open(r'C:\GEO6973\FinalExam\YoungResults\ims_data_list.txt', 'r') as f:
     read_data = f.read()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-04 23:02:03

正如您所说,您的代码正在清空第一个文件夹之后的列表。您必须删除mylist = [ ]之后的第二个roottwo,否则将丢失添加到列表中的所有数据。

在最后一个循环中,如果您试图遍历附加到mylist的路径,请不要使用pop来访问其内容。相反:

代码语言:javascript
复制
for item in mylist:
    dir, filename = os.path.basename(os.path.dirname(item)), os.path.basename(item)
    txt.write(dir + ',' + filename + '\n')

最后,尽量避免使用list作为变量名,因为它是python中的保留关键字。

票数 2
EN

Stack Overflow用户

发布于 2015-05-04 23:16:16

设置rootwo之后,您将调用mylist = [ ]。这将创建一个新列表,有效地擦除以前附加到列表中的所有数据。

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

https://stackoverflow.com/questions/30041424

复制
相关文章

相似问题

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