【发布时间】:2020-05-13 10:35:09
【问题描述】:
我正在尝试遍历目录结构并创建一个类似的结构(但不完全相同)。
我对 os.path.join 的使用感到困惑,以下具有 2 个或更多目录深度的代码可以完美运行。
DIR_1:
一个 |文件2.txt
B |文件3.txt
file1.txt
inputpath = DIR_1
outputpath = DIR_2
for dirpath, dirnames, filenames in os.walk(inputpath):
structure = os.path.join(outputpath, dirpath[len(inputpath):])
for f1 in filenames:
f = os.path.splitext(f1)[0]
path = structure + '/' + f
print ("The path is: ", path)
file1 = path + '/' + f1
print ("The file path is: ", file1)
file_dir = dirpath + '/' + f1;
print ("The file dir path is: ", file_dir)
print ("\n")
但在只有一层深度的情况下,它会添加额外的“/”。有没有办法避免这种情况?
例如以下给出:
The path is: DIR_2//file1
The file path is: DIR_2//file1/file1.txt
The file dir path is: DIR_1/file1.txt
The path is: /A/file2
The file path is: /A/file2/file2.txt
The file dir path is: DIR_1/A/file2.txt
The path is: /B/file3
The file path is: /B/file3/file3.txt
The file dir path is: DIR_1/B/file3.txt
编辑 1:
输出目录 DIR_2 结构与原始 Dir_1 类似,但不完全相同。
DIR_2 应该有额外的一级目录的文件名;例如,而不仅仅是
DIR_2/file1.txt
应该是
DIR_2/file1/file1.txt.
DIR_2/A/file2/file2.txt。同样。
编辑 2: 我还需要阅读dirpath(DIR_1)的内容,并选择相关文本放入相应的输出文件(DIR_2)。所以我不能忽视它。
【问题讨论】:
标签: python python-3.x path