如何使用python在文件中编写列表

时间:2017-02-15 16:58:29

标签: python python-2.7 python-3.x glob os.path

我的数据是这样组织的: 我有30个文件夹。在每个中,有3个子文件夹。在每个文件中都有一个文件。

我想编写一个脚本,在位于文件夹1的文本文件1中写入位于此文件夹1的子文件夹中的文件的路径;等每个其他文件夹。

问题是脚本只在每个文本文件中写入第三个文件(子文件夹3中的文件)而不是子文件夹1,2,3中的文件。

这就是我的尝试:

import glob
import os

gotofolders = '/path/to/folderslocation/'
foldersname = open('/path/to/foldersname.txt').read().split()

for folders in foldersname:
    foldersdirectory = os.path.join(gotofolders,foldersname)
    filepaths = glob.glob(os.path.join(foldersdirectory)+'*subfolders/*files') 
    for filepath in filepaths:
        savethepaths = os.path.join(foldersdirectory)+'files_path_in_that_folder.txt'
        with open (savethepaths,'w') as f:
            f.write(filepath+'\n')

如上所述,它几乎可以工作,除了在每个'files_path_in_that_folder.txt'中我有“filepath”列表的第3个元素,而不是所有3个元素。

谢谢!

2 个答案:

答案 0 :(得分:1)

好的,我明白了;我不得不补充道:

Type

答案 1 :(得分:1)

import os
def directory_into_file(_path, file_obj, depth): 
# depth is a string of asterisk, just for better printing. starts with empty string
file_obj.write(depth + _path + '\n')
if(os.path.isdir(_path)):
    file_list = os.listdir(_path)
    os.chdir(_path)
    for file in file_list:
        directory_into_file(file, file_obj, depth+'*')


    os.chdir("..")

这应该有效。 _path - 目录的路径, file_obj - 将对象文件发送到函数,首先, 深度 - 在第一次调用时发送一个空字符串

希望这会奏效。我自己没试过......