我遍历文件夹中的一堆文件夹和文件,执行此操作:
def get_files_in_directory(directory=rootDirectory):
for root, dirs, files in os.walk(directory, topdown='true'):
print("root %s dirs %s files %s" %(root, dirs, files));
for file in files:
ext = os.path.splitext(file)[-1].lower();
if (ext == '.mod'):
print(file);
当我打印文件时,我还想打印包含它的目录的相对名称。
所以,如果我有
C:\\myfolderA\\myFolderB\\myFile.MOD
我得到了
myFolderB
我不想要
C:\\myFolderA\\myFolderB
当然我可以从dir变量中获取
答案 0 :(得分:17)
使用os.path.relpath(".","..")
,您就完成了。
答案 1 :(得分:5)
print os.path.relpath(root, directory)
其中directory
是函数中已存在的局部变量名。 os.path.relpath()
使root
成为相对于directory
的路径。自从directory
开始散步时,myFolderB
起点为directory = "C:\\myfolderA"
答案 2 :(得分:4)
file_path是文件的完整路径。
folder_path = os.path.dirname(file_path)
folder_path现在是包含文件的文件夹的完整路径。
path,folder_name = os.path.split(folder_path)
folder_name现在只是folder_path末尾文件夹的名称。
print folder_name
答案 3 :(得分:2)
>>> os.path.relpath('/myFolderA/myFolderB/myFile.MOD', '/myFolderA')
'myFolderB/myFile.MOD'
答案 4 :(得分:0)
试验os.path.relpath("myFolderA\\myFile.MOD", "c:\\")
。 os.path.abspath
也可能派上用场。
答案 5 :(得分:0)
看看David Beazley的演讲,“系统程序员的生成器技巧”。
可以找到演示文稿中的幻灯片和源代码here。