这个问题是如何使用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')
答案 0 :(得分: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')
答案 1 :(得分: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'
使用path,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)
答案 2 :(得分: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),其中文件中的每一行都是given_dir中所有文件和目录的完整路径。