2

这个问题是如何使用 python 将目录中的文件列表获取到文本文件中。

文本文件中的结果应该是这样的:

E:\AA\a.jpg
E:\AA\b.jpg
...

如何更正以下代码:

WD = "E:\\AA"
import glob
files = glob.glob ('*.jpg')
with open ('infiles.txt', 'w') as in_files:
    in_files.write(files +'\n')
4

4 回答 4

2

glob.glob()返回一个列表。你必须遍历它。

WD = "E:\\AA"
import glob
files = glob.glob ('*.jpg')
with open ('infiles.txt', 'w') as in_files:
    for eachfile in files: in_files.write(eachfile+'\n')
于 2013-07-24T10:49:39.953 回答
1
  • 输入目录路径:WD = "E://AA"
  • 您可以分配您需要的特定文件扩展名,例如:path = WD+'/*.jpg',
  • 如果您需要所有文件列表,请给出 ' ' 例如:path = WD+'/ '

    import glob w_dir = WD + "/*.jpg" with open("infiles.txt","wb")as fp: for path in [filepath for filepath in glob.glob(w_dir)]: fp.write(path+"\n")

于 2016-04-11T13:14:17.847 回答
0

如果没有路径,glob.glob 返回文件名列表(无目录部分)。要获得完整路径,您需要调用os.path.abspath(filename)//os.path.realpath(filename)os.path.join(WD, filename)

>>> glob.glob('*.png')
['gnome-html.png', 'gnome-windows.png', 'gnome-set-time.png', ...]
>>> os.path.abspath('gnome-html.png')
'/usr/share/pixmaps/gnome-html.png'

使用路径,glob.glob 返回带有目录部分的文件名列表。

>>> glob.glob('/usr/share/pixmaps/*.png')
['/usr/share/pixmaps/gnome-html.png', '/usr/share/pixmaps/gnome-windows.png', '/usr/share/pixmaps/gnome-set-time.png',  ...]

import glob
import os

WD = r'E:\AA'
files = glob.glob(os.path.join(WD, '*.jpg'))
with open('infiles.txt', 'w') as in_files:
    in_files.writelines(fn + '\n' for fn in files)

或者

import glob
import os

WD = r'E:\AA'
os.chdir(WD)
files = glob.glob('*.jpg')
with open('infiles.txt', 'w') as in_files:
    in_files.writelines(os.path.join(WD, fn) + '\n' for fn in files)
于 2013-07-24T10:53:24.497 回答
0

这是一个两行简单的解决方案:

import os
filee = open('all_names.txt','w')
given_dir = 'the_dierctory'
[filee.write(os.path.join(os.path.dirname(os.path.abspath(__file__)),given_dir,i)+'\n') for i in os.listdir(given_dir)]

其中 given_dir 是目录名称。输出是一个文本文件 (all_names.txt),其中文件中的每一行都是给定目录中所有文件和目录的完整路径。

于 2017-07-21T16:19:56.163 回答