【发布时间】:2021-04-02 21:46:00
【问题描述】:
我有一个名为“2013”的根目录,其中有一些子目录如下:
2013/:
1/:
ANAR/
2/:
ANAR/
我打算做的是使用 os.walk() 遍历最里面的子目录(即 ANAR)并在其中创建一个类似的文件夹,如果它不存在的话。这是我的代码:
for root, dirs, files in os.walk ('./2013/'):
for f in dirs:
if not f.isdigit():
path = os.path.join (root, f)
fullpath = f'{path}{os.path.sep}{f}'
if not os.path.isdir (fullpath):
os.mkdir (fullpath)
但我遇到以下错误(在 ./2013/2/ANAR/ 内创建一堆 ANAR 目录):
OSError: [Errno 36] 文件名太长: './2013/2/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR /ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR /ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR/ANAR /ANAR/ANAR/ANAR/ ...
关于原因的任何想法?
【问题讨论】:
-
尝试改用
pathlib,更好的实现[docs.python.org/3/library/pathlib.html]。 -
在遍历子目录时不要创建子目录。
-
您能否准确说明您正在寻找的最终状态是什么,以及您的初始结构如何变化?例如,您是否只想在根目录下创建恰好两个级别的子目录,或者某些目录可以嵌套更多?每个不是数字且不包含在同名文件夹中的文件夹是否都应该包含同名的子文件夹?
-
@CrazyChucky 初始结构很严格,没有变化(年/月/站/)。是的,我要构建的目录恰好位于根目录下 2 级的每个子目录中,不再需要嵌套目录。一行子目录的当前状态是./2013/1/ANAR,我想使它成为./2013/1/ANAR/ANAR