编程语言
首页 > 编程语言> > python-目录名文件名到文本文件

python-目录名文件名到文本文件

作者:互联网

我有许多包含文件的目录.我想创建一个逗号分隔的txt文件,其中显示目录名称以及该特定目录中的文件,请参见以下示例:

我在寻找什么:

DirName,Filename 
999,123.tif 
999,1234.tif 
999,abc.tif 
900,1236.tif 
900,xyz.tif 
...etc

下面的python代码将这些文件路径的列表推入文本文件,但是我不确定如何如上所述格式化列表.

我当前的代码如下:

更新资料

我现在可以格式化文本文件,但是我注意到所有目录名称/文件名都没有写入文本文件.它仅写入〜8000目录/文件中的〜4000.我对文本文件的行数,列表(mylist)大小或阻止它的坏文件目录/文件字符有什么限制(请参见下面的更新代码)?

from os import listdir
from os.path import isfile, join
root = r'C:\temp'
mylist = ['2']
for path, subdirs, files in os.walk(root):
     for name in files:
          mylist.append(os.path.join(path, name))

txt = open(r'C:\temp\output.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:\temp\output.txt', 'r') as f:
     read_data = f.read()

谢谢

解决方法:

也许这会有所帮助:

您可以获取绝对文件路径,然后执行以下操作

import os.path
p = "/tmp/999/123.tif"
dir, filename = os.path.basename(os.path.dirname(p)), os.path.basename(p)

结果:

In [21]: dir
Out[21]: '999'

In [22]: filename
Out[22]: '123.tif'

还可以考虑使用csv模块来编写此类文件.

import csv
import os.path

# You already have a list of absolute paths
files = ["/tmp/999/123.tif"]

# csv writer
with open('/tmp/out.csv', 'wb') as out_file:
    csv_writer = csv.writer(out_file, delimiter=',')
    csv_writer.writerow(('DirName','Filename'))
    for f in files:
        csv_writer.writerow((os.path.basename(os.path.dirname(f)), 
                             os.path.basename(f)))

标签:file,directory,text-files,python
来源: https://codeday.me/bug/20191201/2078820.html