gpt4 book ai didi

python - 目录名+文件名转文本文件

转载 作者:行者123 更新时间:2023-11-28 16:48:28 33 4
gpt4 key购买 nike

我有很多包含文件的目录。我想创建一个逗号分隔的 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)))

关于python - 目录名+文件名转文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11122418/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com