我的数据是这样组织的: 我有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个元素。
谢谢!
答案 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 - 将对象文件发送到函数,首先, 深度 - 在第一次调用时发送一个空字符串
希望这会奏效。我自己没试过......