我有多个文件夹存在的目录,在每个文件夹中,一个文件存在于另一个文件夹中。下面是结构
C:\users\TPCL\New\20190919_xz.txt
C:\users\TPCH\New\20190919_abc.txt
目标:
我想重命名如下文件名:
C:\users\TPCL\New\20190919_xz_TPCL.txt
C:\users\TPCH\New\20190919_abc_TPCH.txt
我的方法:
for root,dirs,filename in os.walk('C\users\TPCL\New'):
prefix = os.path.basename(root)
for f in filename:
os.rename(os.path.join(root,f),os.path.join(root,"{}_{}".format(f,prefix)))
上述方法产生以下结果:
C:\users\TPCL\New\20190919_xz_New.txt
C:\users\TPCH\New\20190919_abc_New.txt
所以问题是:如何得到父文件夹的名称得到附加,而不是父文件夹的名称?你知道吗
您可以使用“\”分割路径字符串,然后倒数到将被视为祖父母的内容 任何给定文件的目录,然后附加它。例如,如果你有
最后一项是文件名,倒数第二项是父项,倒数第三项是祖父母,依此类推。然后,您可以将任何想要的目录附加到字符串的末尾。你知道吗
使用来自^{} 的
PurePath
可以得到路径的各个部分。如果路径包含文件名,则其父文件夹将位于索引-3
。你知道吗如果路径不包含文件名,grand=parent将位于索引
-2
。你知道吗您的流程如下所示:
我添加了
try/except
来过滤出没有祖父母的路径-如果您知道不需要它,就不需要了。你知道吗您需要同时使用dirname和basename来执行此操作。你知道吗
使用操作系统路径目录名获取目录名(不包括最后一部分)和
然后使用操作系统路径基名称获取路径名的最后一部分。你知道吗
替换
prefix = os.path.basename(root)
与
请参考:
https://docs.python.org/3.7/library/os.path.html#os.path.basenamehttps://docs.python.org/3.7/library/os.path.html#os.path.dirname
相关问题 更多 >
编程相关推荐